SQL如何先用group by分组,并将分组的结果distinct?

问题如下:

id tag
11 a
11 a
22 b
33 b
33 c
44 d
55 e
66 e
如何统计a、b、c、d、e五个tag下分别有多少个不重复ID呢?

以求得一下结果:
a 1
b 2
c 1
d 1
e 2

select tag, count(distinct(id)) from table_name group by tag;    mysql里执行正确

模拟数据:

操作结果:

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-21
select tag,count(id)
from table
group by tag;追问

我只想知道每类tag下有多少个不重复的id的话,是不是应该
select tag,count(distinct id)
from table
group by tag;
呢?

因为tag a下面有两个相同的id:11

SQL如何先用group by分组,并将分组的结果distinct?
select tag, count(distinct(id)) from table_name group by tag; mysql里执行正确 模拟数据:操作结果:

SQL GROUP BY 语句如何对结果集进行分组并结合Aggregate函数使用?
SQL GROUP BY语句在数据分析和聚合操作中发挥着核心作用,它结合了集合函数(如COUNT, MAX, MIN, SUM, AVG)对查询结果进行分组处理。GROUP BY语句的基本语法如下:GROUP BY语法示例:SELECT column_name(s)FROM table_nameWHERE conditionGROUP BY column_name(s)ORDER BY column_name(s);以Northwind...

开发实战角度:distinct实现原理及具体优化总结
在map阶段如果出现数据倾斜,可以进行相应的处理,常见的方法有单独计算key、替换随机数等。针对group by的特殊方法有几种。Distinct单字段原理:当执行Distinct操作时,Hive将其转化为MapReduce作业,并按指定列进行分组。Map阶段,每个Mapper读取输入数据,将指定列作为输出的key,通过Shuffle过程将具有相同key...

distinct和group by的功能、使用和底层原理
DISTINCT和GROUP BY都是SQL查询中用于数据去重和分组的重要功能。DISTINCT主要在SELECT语句中去除结果集中的重复行,但可能影响性能,需谨慎使用并考虑索引优化。GROUP BY则常用于分组聚合,如统计每个城市的用户数量,同时也可以用于数据去重,且在某些场景下性能优于DISTINCT。在Mysql8.0及以上版本,即使无索...

高手请进,GROUP BY 和distinct
1、对于你的第一个问题:select distinct 字段1,字段2,字段3,字段4... from 表名;这样查出的就是不重复的(字段1,字段2,字段3,字段4...)2、对于你的第二个问题:select L1,L2 from 表 group by L1,L2;这样实现的效果就是 先按L1分组再按L2分组了,你把这些数据取到list中,循环读取list...

SQL中分组短语是什么
GROUP BY ProductPlace 这个SQL语句就是使用了Group By + 分组字段的方式,那么这句SQL语句就可以解释成“我按照出产国家(ProductPlace)将数据集进行分组,然后分别按照各个组来统计各自的记录数量。”很好理解对吧。这里值得注意的是结果集中有两个返回字段,一个是ProductPlace(出产国),一个是水果种类。如果我们这里...

SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序?
SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序? 先进行分组处理。 Group By 和 Having, Where ,Order by这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的...

sql 如何分组排序同时进行
1、首先输入代码:SELECT * FROM (select * from CJ where Gender='女') m where( select COUNT(*) from (select * from CJ where Gender='女') n where m.Classid = n.Classid and n.English > m.English)<2 order by Classid, English desc 2、然后再输入代码:SELECT * FROM CJ ...

SQL 聚合函数,分组操作
SQL的debug问题,需要知道,SQL执行的顺序是先根据from和where限定条件找到符合条件的记录,然后用group对记录进行分组,分组后做聚合操作,再把结果用having语句过滤,最后用select语句显示的并且执行order by和Limit语句,这就是为什么group by和having不能使用select中定义的别名,where中不能用聚合函数,因为...

SQL子句--GROUP BY子句数据分组
GROUP BY子句的基本语法是将数据按照指定字段进行分组,常与聚合函数(如COUNT、SUM、AVG等)结合使用,以获取各组的统计数据。例如,当我们需要统计每个课号的平均成绩时,就需要用到GROUP BY和聚合函数。分组后的数据,我们还可以利用ORDER BY子句进行排序。它必须放置在GROUP BY之后,用于规定分组结果的...

相似回答