sql - SQL查询以获取子计数并将其求和
问题描述
我的桌子有点像:
ID CODE SUB_CODE
------ ------ ------------
| 1 | A | A1 |
--------------------------
| 2 | A | A1 |
--------------------------
| 3 | A | A3 |
--------------------------
| 4 | B | B1 |
我想要得到的结果是:
CODE CODE_COUNT SUB_CODE SUB_CODE_COUNT
A 3 A1 2
A 3 A3 1
B 1 B1 1
所以SUB_CODE_COUNT
是每个唯一的总和SUB_CODE
,并且CODE_COUNT
是所有的SUB_CODE
总和CODE
这是我现在拥有的:
SELECT
CODE,
SUB_CODE,
COUNT(SUB_CODE) AS SUB_CODE_COUNT,
FROM
TABLENAME
GROUP BY
CODE, SUB_CODE
结果:
CODE SUB_CODE SUB_CODE_COUNT
A A1 2
A A3 1
B B1 1
解决方案
使用分析函数:
SELECT CODE, SUB_CODE,
COUNT(*) AS SUB_CODE_COUNT,
SUM(COUNT(*)) OVER (PARTITION BY CODE) as CODE_COUNT
FROM TABLENAME
GROUP BY CODE, SUB_CODE;
推荐阅读
- python - 根据 pandas df 中的条件在现有列中插入新行
- c# - 失去焦点时从按钮中删除灰色边框
- java - 如何在 IntelliJ 中更改为 gradle 任务分配的内存
- docker - 如何在 docker 中挂载应用程序日志文件夹?
- java - 如何使用 Java 在 Android 中打开和关闭飞行模式
- javascript - “XML 解析错误:找不到根元素”
- node.js - 节点js中的RabbitMQ消费未完成
- google-speech-to-text-api - Gcloud ml语音识别 - 不返回国家字符
- sql - 返回具有另一个表中不存在的值的行
- c++ - 如何将C++字符串中元素的地址作为数组获取