python - 带有 Group By 子查询的 SQL Max
问题描述
我有一张表,上面有保险福利,以及他们被给予的年限。我想找到每年计数最多的好处。
我在 python 3 中使用 sqlite3。
我的第一个查询是
SELECT COUNT(Benefitname) AS BenCount, BusinessYear
FROM BenefitsCostSharing
GROUP BY Benefitname
这给了我一张包含福利计数和年份的表格。我将第一个查询放入子查询中,尝试使用以下代码按年份查找最多计数:
SELECT MAX(BenCount), BusinessYear
FROM (
SELECT COUNT(Benefitname) AS BenCount, BusinessYear
FROM BenefitsCostSharing
GROUP BY Benefitname
)
GROUP BY BusinessYear;
此查询为我提供了每年的以下最大值:
2014-77377
2015-3049
2016-644
我知道 2015 年和 2016 年的最大计数不正确。但我不知道为什么它不起作用。
我的数据来自https://www.kaggle.com/hhs/health-insurance-marketplace
任何帮助,将不胜感激。
解决方案
您需要按年份和福利名称分组,然后加入:
SELECT year, name
FROM (SELECT BusinessYear as year, Benefitname as name, COUNT(*),
ROW_NUMBER() OVER (PARTITION BY BusinessYear ORDER BY COUNT(*) DESC) as rn
FROM BenefitsCostSharing
GROUP BY BusinessYear, Benefitname
) t
WHERE rn = 1;
推荐阅读
- javascript - 简单的任务列表排序 - 如何将其保存到 Firebase Firestore?
- php - 在 mcrypt 上使用谜
- python - 将每个索引的编号放在numpy的对应位置
- elasticsearch - 查询多个索引时,仅检索弹性搜索命中中的特定 _index 文档
- java - 使用杰克逊转换带有重复键的 JSON
- wordpress - 如何在使用 WP 加载页面期间阻止外部静态资源
- java - 如何测试 AOP 拦截器?
- c++ - cmake生成的执行文件使用gdb失败
- java - 是否可以让 Maven "WAR" pom.xml 将我的类打包到一个 JAR 中并将 JAR 放在 /WEB-INF/lib 文件夹中?
- c - 如何处理 C 中的未定义行为错误?