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条数据,自己尝试了下该数据也是正确的。

猜你喜欢

转载自blog.csdn.net/qq544649790/article/details/84563987