sql - SQL:选择语句,聚合函数列不带过滤器,另一列带过滤器
问题描述
我有选择查询的表,如下所示
SELECT
AVG([ScoreAverage]) AS OverallAverage,
COUNT(*) AS ScoreCount
FROM
[Score]
我StatusId
在[Score]
表中有另一列。
在上面的SELECT
语句中,我想计算另一个聚合列COUNT(*) WHERE StatusId = 4
。
是否可以在同一个 select 语句中执行此操作,还是我需要单独查询?
SELECT
AVG([ScoreAverage]) AS OverallAverage,
COUNT(*) AS ScoreCount,
COUNT(?Status where it is '4'?) AS CountOfStatusFour
FROM
[Score]
解决方案
您可以将条件聚合与case when
表达式一起使用,如下所示:
select AVG([ScoreAverage]) AS OverallAverage, COUNT(*) AS ScoreCount, sum(case when Statusid ='4' then 1 else 0 end) AS CountOfStatusFour
from [Score]
CountOfStatusFour
Statusid
仅在 for which为 '4'时才计算行数
推荐阅读
- visual-studio-code - VS Code 中的 Markdown 围栏/代码块背景突出显示
- google-cloud-platform - Google Cloud Kubernetes 节点带宽
- express - 我已经安装了 express 和 express-generator 但它仍然无法正常工作但是我可以看到 node_modules 中的两个文件夹
- javascript - 将 Firestore 可观察对象投射到自定义对象
- sqlite - React native 在 sqlite 中看不到新表
- sql-server - 如何从数据库中填充复选框
- javascript - 如何在react js中单击按钮时触发用户飞行员(用户入职软件)触发功能
- digital-signature - 在比特币源代码的哪个文件中完成了签名验证过程?
- reactjs - React-ckeditor5:CKEditorError:datacontroller-set-non-existent-root:尝试在不存在的根上设置数据
- python - 如何清理最不常用的 python 包?