SQL如何先用group by分组,并将分组的结果distinct?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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里执行正确
模拟数据:
操作结果:
参考技术A 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
sqlserver2008,sql编程,group by 用法
参考技术A 语句中有groupby的话,说明是进行分组聚合查询,因此select后的属性只能是group
by后面的分组属性和在其它字段上的聚合函数结果(avg平均值,sum求和,count计数等),而order
by后的属性也必须是分组属性或聚合结果,因为此时是对分组后的结果进行排序。
group
by相当于对数据分组,分组属性有多少各不同的值就有多少各分组,每个分组是结果集中一条记录
以上是关于SQL如何先用group by分组,并将分组的结果distinct?的主要内容,如果未能解决你的问题,请参考以下文章
sqlserver2008,sql编程,group by 用法