sql - Oracle SQL:选择多个不同字段的计数
问题描述
我需要select
id
,type
并计算具有唯一id-type
组合的行数。
所以我尝试了这样的事情:
SELECT ID,
CASE
WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END AS TYPE,
COUNT(DISTINCT ID, TYPE)
FROM PRODUCTS
GROUP BY ID, TYPE;
另外问题是在处理查询时计算类型,所以当我尝试做类似的事情时:
SELECT ID,
/*SOMETHING*/ END AS TYPE,
COUNT(*)
FROM (SELECT DISTINCT ID,TYPE FROM PRODUCTS GROUP BY ID,TYPE);
我懂了:
ORA-00904: "TYPE": invalid identifier
有什么建议么?
解决方案
您可以使用子查询:
SELECT DISTINCT ID,
(CASE WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END) AS TYPE
FROM PRODUCTS;
然后您可以将其转换为子查询::
SELECT ID, TYPE, COUNT(*)
FROM ( <QUERY HERE> ) T
GROUP BY ID, TYPE;
推荐阅读
- javascript - 使用数组道具更新不正确的反应子组件
- reactjs - axios API 调用未触发
- node.js - 蒙聚合直接返回文档数组
- flutter - 删除默认启动屏幕 android & ios flutter
- bash - 为什么 ''rm "$dir"/* !(.gitignore)'' 会删除脚本本身?
- javascript - 无法预先添加使用 jQuery 单击的 div
- python - kubectl:它是如何发现集群配置的?
- javascript - 如何使用 glob npm 模块获取具有不同模式的文件名列表
- android - 如何修复前一个片段的折叠工具栏和当前片段的内容重叠?
- mysql - 基于查找表在超过 500.000 行中搜索和替换多个单词