1. 程式人生 > >Mysql雙表查詢,輸出平均point大於6.5的number和對應number的資料數量(自己經常忘記,Mark下)

Mysql雙表查詢,輸出平均point大於6.5的number和對應number的資料數量(自己經常忘記,Mark下)

points表
在這裡插入圖片描述

users表
在這裡插入圖片描述

附上建表sql(如果你想嘗試)

CREATE TABLE `points` (
  `id` int(11) NOT NULL,
  `flag` int(11) DEFAULT NULL,
  `point` int(11) DEFAULT NULL,
  `number` bigint(11) DEFAULT NULL,
  `time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

1、先從簡單的開始,查詢平均point

SELECT
	p.number,
	AVG(p.point)
FROM
	points p,
	users u
WHERE
	p.number = u.number
GROUP BY
	p.number;

在這裡插入圖片描述
2、加入Having

SELECT
	p.number,
	AVG(p.point)
FROM
	points p,
	users u
WHERE
	p.number = u.number
GROUP BY
	p.number
HAVING
	AVG(p.point >=6.5);

在這裡插入圖片描述
3、改為輸出number和count(*)

SELECT
	p.number,
	COUNT(*)
FROM
	points p,
	users u
WHERE
	p.number = u.number
GROUP BY
	p.number
HAVING
	AVG(p.point >=6.5);

在這裡插入圖片描述

PS:確實就是1條資料,自己嘗試了下該資料也是正確的。