我有一个如下表格
|-----|-----|--------|
| id | num | amount |
|-----|-----|--------|
| 101 | a | 10 |
| 102 | a | 6 |
| 102 | a | 3 |
| 101 | b | 5 |
| 101 | a | 10 |
| 101 | b | 5 |
|-----|-----|--------|
我要显示的是
|---------------------|------------------|---------------------|
| id | num | amount |
|---------------------|------------------|---------------------|
| 101 | a,b | 5 |
|---------------------|------------------|---------------------|
即,如果 num 表中的两个不同值具有相同的 id,则将它们的数量相加并除以 3,而其他值将被丢弃。如何使用 mysql 实现此目的?
我认为这个查询会做你想要的。它检查具有多个不同值的 id 值num
与其关联,并显示其金额除以 3 的SUM
。我在num
上放了一个GROUP_CONCAT
,以便输出包含不同num
值的列表。
SELECT id, GROUP_CONCAT(DISTINCT num) AS nums, SUM(amount) / 3 AS amount
FROM table1
GROUP BY id
HAVING COUNT(DISTINCT num) > 1
输出:
id nums amount
101 a,b 5
SQLFiddle