我有一个如下的招聘表:
------------------------------------------------------
| slot_id | hired_days | qty | amt | return |
-----------|-------------|-------|-------|-----------|
| 1 | 30 | 5 | 100 | 0 |
| 1 | 30 | 15 | 300 | 0 |
| 1 | 30 | 12 | 170 | 1 |
| 1 | 25 | 13 | 180 | 0 |
| 1 | 30 | 4 | 180 | 1 |
| 2 | 30 | 15 | 300 | 0 |
------------------------------------------------------
我希望结果按 slot_id 和hired_days 进行分组,但分组应该仅针对 0 行的返回值进行。结果表需要显示所有分组行并返回1条数据。有没有办法用 SQL 来做到这一点?
-------------------------------------------------------
| slot_id | hired_days | qty | amt | return |
|----------|-------------|--------|-------|-----------|
| 1 | 30 | 20 | 400 | 0 |
| 1 | 25 | 13 | 180 | 0 |
| 1 | 30 | 12 | 170 | 1 |
| 1 | 30 | 4 | 180 | 1 |
| 2 | 30 | 15 | 300 | 0 |
-------------------------------------------------------
最佳答案
您可以使用UNION
操作
SELECT slot_id,hired_days,sum(qty),sum(amt),return FROM hiring
WHERE return=0 GROUP BY slot_id,hired_days
UNION ALL
SELECT slot_id,hired_days,qty,amt,return FROM hiring WHERE return =1
关于mysql - SQL 按列和列值分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45300120/