gpt4 book ai didi

sql - 是否可以将Group by,Having和Sum组合在一起?

转载 作者:行者123 更新时间:2023-12-04 05:11:34 24 4
gpt4 key购买 nike

我有一张 table :

------------------------
|id|p_id|desired|earned|
------------------------
|1 | 1 | 5 | 7 |
|2 | 1 | 15 | 0 |
|3 | 1 | 10 | 0 |
|4 | 2 | 2 | 3 |
|5 | 2 | 2 | 3 |
|6 | 2 | 2 | 3 |
------------------------

我需要进行一些计算,然后尝试在一个不太复杂的请求中进行计算,否则我知道如何使用请求数进行计算。
我需要如下所示的结果表:
---------------------------------------------------------
|p_id|total_earned| AVG | Count | SUM |
| | | (desired)|(if earned != 0)|(desired)|
---------------------------------------------------------
| 1 | 7 | 10 | 1 | 30 |
| 2 | 9 | 2 | 3 | 6 |
---------------------------------------------------------

我到目前为止构建:
SELECT p_id, SUM(earned), AVG(desired), Sum(desired) 
FROM table GROUP BY p_id

但是我不知道如何计算带条件的分组记录的数量。我可以使用 HAVING来获得此号码,但要在单独的请求中。

我几乎确定什么SQL应该具有这种功能。

最佳答案

您可以为此使用CASE表达式。

试试这个,

SELECT p_id
,SUM(earned) AS total_earned
,AVG(desired) AS avg_desired
,COUNT(CASE WHEN Earned!=0 THEN 1 END) AS earned_count
,SUM(desired) AS sum_desired
FROM table
GROUP BY p_id;

关于sql - 是否可以将Group by,Having和Sum组合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587142/

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