【发布时间】:2019-04-17 00:23:10
【问题描述】:
试图找到允许我按组计算名字的代码,然后返回计数最少的名字。
样本数据:-
PersonGroup FirstName
------------------------
A Bob
A Mary
A Bob
A Bob
B Michelle
B Michelle
B Greg
B Greg
B Michelle
C Cindy
C Michelle
C Michelle
D Rod
D Rod
D Rod
D Rod
D Rod
D Mary
D Mary
D Mary
D Mary
D Mary
D Mary
需要输出:
PersonGroup FirstName Count
--------------------------------
A Mary 1
B Greg 2
C Cindy 1
D Rod 5
First Name 列的名称在组中出现最少
Count 列包含每组出现次数最少的 Name 计数
这是我目前的代码,但是每个名字都会被返回,
select
PersonType,
FirstName,
count (firstName) as mycount
from
[Person].[Person]
group by
FirstName,
[PersonType]
having
count(firstName) = (select min(a.cnt)
from
(select count(firstname) as cnt
from [Person].[Person]
group by [FirstName]) as a)
order by
PersonType desc
【问题讨论】:
-
领带呢?例如,如果一个组的两个(或多个)名称只出现一次,你想返回什么?
-
对于 SQL 问题,您应该始终标记您的 DBMS。非标准括号看起来像 SQL Server。这是您使用的 DBMS 吗?
-
样本数据不佳。删除 (B, Michelle) 行中的一个,让它变得更棘手! (并相应地调整预期结果。)