sql - SQL 名称计数总和,按年份分组
问题描述
真的希望有人可以帮助我,因为我对 SQL 很垃圾!
我有一个如下所示的表格,我需要显示每年最受欢迎的名字......
+---------+----+-----------+------+-----------+-----+
|UNIQUE_ID|YEAR| COUNTY|GENDER| NAME|COUNT|
+---------+----+-----------+------+-----------+-----+
| 1|2013|ST LAWRENCE| M| GAVIN| 9|
| 2|2013|ST LAWRENCE| M| LEVI| 9|
| 3|2013| NEW YORK| M| LOGAN| 44|
| 4|2013| NEW YORK| M| HUDSON| 49|
| 5|2013| NEW YORK| M| GABRIEL| 50|
| 6|2013| NEW YORK| M| THEODORE| 51|
| 7|2013| KINGS| F| ELIZA| 16|
| 8|2013| KINGS| F| MADELEINE| 16|
| 9|2013| KINGS| F| ZARA| 16|
| 10|2013| KINGS| F| DAISY| 16|
| 11|2013| NEW YORK| M| JONATHAN| 51|
| 12|2013| NEW YORK| M|CHRISTOPHER| 52|
| 13|2013| SUFFOLK| M| LUKE| 49|
| 14|2013| NEW YORK| M| JACKSON| 53|
| 15|2013| SUFFOLK| M| JACKSON| 49|
| 16|2013| NEW YORK| M| JOSHUA| 53|
| 17|2013| NEW YORK| M| AIDEN| 53|
| 18|2013| SUFFOLK| M| BRANDON| 50|
| 19|2013| KINGS| F| JUDY| 16|
| 20|2013|ST LAWRENCE| M| MASON| 8|
+---------+----+-----------+------+-----------+-----+
...持续数千行...
我知道我必须逐年进行计数和分组,但我尝试的任何方法似乎都不起作用。
输出应该看起来像......
+----+--------+-----------+
|YEAR|TOTAL |MOST_POPULAR|
+----+--------+-----------+
|2016| 12419| GAVIN|
|2015| 22119| LEVI|
|2014| 44113| LOGAN|
|2013| 12349| HUDSON|
|2012| 15024| GABRIEL|
|2011| 55311| THEODORE|
|2010| 13446| ELIZA|
|2009| 12346| MADELEINE|
|2008| 13456| ZARA|
|2007| 21126| DAISY|
|2006| 13451| JONATHAN|
|2005| 52241|CHRISTOPHER|
|2004| 14923| LUKE|
+----+-----+-----------+
请帮忙!
解决方案
这应该有帮助 -
SELECT YEAR,TOTAL, NAME AS MOST_POPULAR
FROM (
SELECT YEAR,NAME,TOTAL, DENSE_RANK() OVER (PARTITION BY YEAR ORDER BY TOTAL DESC) AS RNK
FROM (
SELECT YEAR,SUM(CNT) AS TOTAL, NAME
FROM TAB1
GROUP BY YEAR,NAME
ORDER BY 2 DESC
)
) WHERE RNK = 1
ORDER BY YEAR DESC;
推荐阅读
- javascript - 如何使用 useEffect 取消选中
- javascript - 嵌入多个 Youtube 直播并使用按钮管理显示
- python - Python:用 scipy different_evolution 拟合参数,如何强制一个参数小于另一个参数?
- linux - 如果每行包含时间戳,如何使用 bash 获取日志记录频率?
- spring - ProxyingHandlerMethodArgumentResolver 干扰数据绑定
- python - 如何告诉 pip 并行化编译
- python - 创建反向虚拟变量
- .net - 为什么我们在 ASP.NET Core Web Application 中有一个 Main() 方法(入口方法)?这种方法背后的原因是什么?
- sql - 统计一个表是否满足一个或多个条件 SQL
- typescript - 在 Puppeteer 中使用向下箭头滚动