不同列值的mysql与group by求和
上面是我的t桌。我需要得到以下结果不同列值的mysql与group by求和,mysql,group-by,sum,Mysql,Group By,Sum,上面是我的t桌。我需要得到以下结果 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,
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 |
我想要相同nxx的面积之和加上如果nxx=0的面积之和
我当前的查询是这样的。但如果nxx=0,我不希望将面积之和作为单独的行,相反,如果nxx=0,我希望将面积之和添加到其他行中。因此,我们也希望按nxx分组,但对于nxx=0,应将面积_sq添加到其他nxx值中。我真的为不正确的英语感到抱歉。我尝试了不同的事情,但没有一件成功。提前谢谢
| PLACE_ID | SUM(AREA_SQ) |nxx |
|----------|--------------|----|
| 1 | 50 | 1|
| 2 | 100 | 2|
| 2 | 40 | 1|
| 3 | 10 | 3|
您可以有一个额外的子查询进行连接,该子查询单独计算nxx=0的总和
select place_id,sum(area_sq) from t group by place_id,nxx
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