sql - SQL 平均百分比(按组)
问题描述
我有一些示例记录的 table1(将有超过 100 条记录)
lastname courtesy
Lane 3
Lane 4
Lane 5
Lane 12
Santana 4
Santana 5
我的查询是按姓氏分组并没有按姓氏分组,
您可以看到 Lane 和 Santana 仍然没有分组。
请更正查询。谢谢你。
SELECT
lastname,
courtesy,
percentage = AVG(courtesy) * 100 / SUM(AVG(courtesy)) OVER (PARTITION BY lastname)
FROM echo
GROUP BY
lastname, courtesy
结果
lastname courtesy percentage
Lane 3 12
Lane 4 16
Lane 5 20
Lane 12 50
Santana 4 44
Santana 5 55
结果看起来像这样
lastname percentage
Lane 16 (4/24)
Satana 22 (2/9)
count (lastname) / sum (courtesy) group by lastname
解决方案
我认为这是您想要的逻辑:
SELECT lastname,
SUM(SUM(courtesy)) OVER (ORDER BY lastname),
COUNT(*) * 1.0 / SUM(courtesy)
FROM echo
GROUP BY lastname;
推荐阅读
- github - Github GraphQL API:如何通过 GrahpQL api 获取代表的一个源文件?
- microservices - Nest JS 微服务 TCP E2E 测试
- spring-boot - JwtAccessTokenConverterConfigurer 替代?
- c++ - 元组的运行时索引
- c# - QueryString 中的 DateTime 格式错误
- visual-studio - 如何在单个 WiX 安装程序中为多个 msi 包提供可选安装?
- python - snakemake 临时目录
- python-3.x - 我的代码是不是短路了(python3)
- c# - Asp.net core中的部分视图表拖放行
- sql - 使用 OR 条件选择具有存在运算符的行