Mysql雙表查詢,輸出平均point大於6.5的number和對應number的資料數量(自己經常忘記,Mark下)
阿新 • • 發佈:2018-12-23
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條資料,自己嘗試了下該資料也是正確的。