简单的SQL查询,但坚持下去

时间:2018-04-22 22:23:35

标签: sql sql-server tsql

database mode

唯一相关的表是数据库模型中的“员工”。

问:哪个月是员工生日最多的?

使用

SELECT DATEPART(m, dateofbirth) AS month
FROM employee

我实际上可以看到每个员工的所有月份并自己计算。

但我怎样才能展示最常见的生日月份?

提前致谢!

recent output (for comment below)

2 个答案:

答案 0 :(得分:1)

您需要使用GROUP BY。这会将单独的month值组合在一起。完成后,您可以应用COUNT,然后按该统计信息的降序排序值。然后,您需要将该逻辑包装在公用表表达式中,这样您就可以只选择具有最大COUNT的月份。

WITH ranking AS (
    SELECT 
    DATEPART(m, dateofbirth) AS month,
    COUNT(*) as ct
    FROM DM_MTA.dbo.employee
    GROUP BY DATEPART(m, dateofbirth) 
) 
select
month 
from
ranking
where ct = (select max(ct) from ranking)

答案 1 :(得分:0)

这将为您提供您正在寻找的确切月份:

SELECT TOP 1 DATEPART(m, dateofbirth) AS month
FROM employee
GROUP BY DATEPART(m, dateofbirth)
ORDER BY count(DATEPART(m, dateofbirth)) DESC