gpt4 book ai didi

SQL查询计算不同条件满足的结果数

转载 作者:行者123 更新时间:2023-12-01 23:27:01 24 4
gpt4 key购买 nike

我有一个看起来像这样的查询

SELECT ju.name,
COUNT(DISTINCT p.value) AS nproblems
FROM #problems p
JOIN <thing> ju ON <whatever>
WHERE <condition 1>
AND <condition 2>
AND <condition 3>
GROUP BY ju.name
ORDER BY nproblems DESC

这很好,并为我提供了一个包含名称和值的结果集。但我真正关心的是没有 WHERE 子句的问题数量,然后只有条件 1,然后是条件 1+2,然后是条件 1+2+3。我想写

SELECT ju.name,
COUNT(DISTINCT p.value WHERE <condition 1>) foo,
COUNT(DISTINCT p.value WHERE <condition 2>) bar,
...

但遗憾的是我不能。有没有好的方法可以做到这一点?

最佳答案

您可以使用 CASE 表达式来执行此操作:

SELECT ju.name,
SUM(CASE WHEN <condition 1> THEN 1 ELSE 0 END) AS foo,
SUM(CASE WHEN <condition 1> THEN 1 ELSE 0 END) AS bar,
...
FROM #problems p
JOIN <thing> ju ON <whatever>
GROUP BY ju.name
ORDER BY nproblems DESC;

但是:如果您使用的 RDBMS 支持 PIVOT 表运算符(例如 MS SQL Server 或 Oracle),则可以直接使用它来执行此操作。

<小时/>

由于您使用的是 SQL Server,因此可以使用 PIVOT表操作符这样做:

SELECT *
FROM
(
) AS t
PIVOT
(
COUNT(value)
FOR name IN(...)
) AS p;

关于SQL查询计算不同条件满足的结果数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15498167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com