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條數據,自己嘗試了下該數據也是正確的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章