我有一张表有一些报告信息。在该表中,我有userid
和areaname
。
现在我的要求是根据区域
获取用户列表的计数例如表格将有
userid | areaname
-----------------
1 |area 1
1 |area 1
2 |area2
2 |area 2
2 |area2
3 |area1
3 |area1
4 |area3
5 |area2
---------------
结果必须是
area1 2users
area2 2users
area3 1user
实现这个的mysql查询是什么?
答案 0 :(得分:2)
使用聚合函数COUNT()
获取用户数,GROUP BY
根据areaname
获取计数
使用DISTINCT
获取唯一值
SELECT COUNT(DISTINCT userid),areaname FROM tablename GROUP BY areaname;
答案 1 :(得分:0)
我知道,你可以很好地获得参赛作品:
所以我会做一个子选择
SELECT sum(partly_sum), area
FROM (
SELECT
userid, area , count(*) as partly_sum
FROM
_YOUR_TABLE_NAME_
WHERE 1
GROUP BY area, userid
) as a_bad_sub_query
WHERE 1
GROUP BY area
此致
答案 2 :(得分:0)
SELECT count(userid),area FROM YOURTABLENAME GROUP BY area;
答案 3 :(得分:0)
您可以使用distinct
来避免欺骗条目
SELECT COUNT(DISTINCT userid),areaname FROM tablename GROUP BY areaname