gpt4 book ai didi

mysql sum with group by 不同的列值

转载 作者:行者123 更新时间:2023-11-29 05:27:17 24 4
gpt4 key购买 nike

create table t (
`place_id` int(11) NOT NULL ,
`area_sq` int (11) NOT NULL,
`nxx` int(11) NOT NULL
);
insert into t values(1, 50, 1);
insert into t values(2, 90, 2);
insert into t values(2, 20, 1);
insert into t values(2, 10, 0);
insert into t values(2, 10, 1);
insert into t values(3, 10, 3);


| PLACE_ID | AREA_SQ | NXX |
|----------|---------|-----|
| 1 | 50 | 1 |
| 2 | 90 | 2 |
| 2 | 20 | 1 |
| 2 | 10 | 0 |
| 2 | 10 | 1 |
| 3 | 10 | 3 |

上面是我的名为t 的表。我需要得到以下结果

| PLACE_ID | SUM(AREA_SQ) |nxx |
|----------|--------------|----|
| 1 | 50 | 1|
| 2 | 100 | 2|
| 2 | 40 | 1|
| 3 | 10 | 3|

如果 nxx=0,我想要相同 nxx 的 area_sq 的总和加上 area_sq 的总和

我目前的查询是这样的。但是如果 nxx=0,我不想将 area_sq 的总和作为单独的行,相反,如果 nxx=0,我想将 sum(area_sq) 添加到其他行。所以也想按 nxx 分组,但是对于 nxx=0 area_sq 应该添加到其他 nxx 值。对于不正确的英语,我真的很抱歉。我尝试了不同的方法,但都没有成功。提前致谢。

select place_id,sum(area_sq) from t group by place_id,nxx

最佳答案

您可以加入一个额外的子查询,它单独计算 nxx = 0 的总和。

SELECT  t.PLACE_ID, 
SUM(t.AREA_SQ) + COALESCE(s.AREA_SQ,0) totalSum,
NXX
FROM t LEFT JOIN
(
SELECT PLACE_ID, SUM(AREA_SQ) AREA_SQ
FROM t
WHERE NXX = 0
GROUP BY PLACE_ID
) s ON t.PLACE_ID = s.PLACE_ID
WHERE NXX <> 0
GROUP BY t.PLACE_ID, NXX
ORDER BY t.PLACE_ID, totalSum DESC

关于mysql sum with group by 不同的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18710147/

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