Mysql 将最后一行分组为一个求和值
我有一张mysql表:Mysql 将最后一行分组为一个求和值,mysql,Mysql,我有一张mysql表: date | client | total 2015-01-01 | john | 85.00 2015-01-01 | alfred | 35.00 2015-01-01 | georgy | 125.00 2015-01-01 | linda | 42.00 2015-01-01 | alex | 76.00 2015-01-01 | john | 94.00 2015-01-01 | john | 75.30 我想按客户名称分组,计算
date | client | total
2015-01-01 | john | 85.00
2015-01-01 | alfred | 35.00
2015-01-01 | georgy | 125.00
2015-01-01 | linda | 42.00
2015-01-01 | alex | 76.00
2015-01-01 | john | 94.00
2015-01-01 | john | 75.30
我想按客户名称分组,计算总金额和百分比,因此我进行了以下查询:
SELECT client, total, round(total*100/t.th,1) as percent
FROM (
SELECT client, sum(total) as total
FROM mytable
WHERE date='2015-01-01'
GROUP BY `client`) c
JOIN ( select sum(total) as th from mytable
WHERE date='2015-01-01') t
order by percent desc
获得这一结果非常有效:
client | total | percent
john | 254.3 | 47.8
georgy | 125 | 23.5
alex | 76 | 14.3
linda | 42 | 7.9
alfred | 35 | 6.6
但我不知道是否有可能将最后几行相加,并在一行中分组,得到这样的结果,例如:
client | total | percent
john | 254.3 | 47.8
georgy | 125 | 23.5
others | 135 | 28.8
我想知道如何修改查询以获得此结果
我需要一些帮助。你的标准是什么?你想要的是两个最高的总数,然后是“其他”,还是其他?@LightnessRacesinOrbit是的,就像这个例子,或者如果我有更多的行,显示一些第一行,然后是“其他”。是的,完全可能正确,但我想说的是,定义“一些第一行”。你不能告诉计算机“第一排”,你必须准确地告诉它该做什么。它总是前两行,还是其他什么?@LightnessRacesinOrbit当然我会定义行数,在示例中是前两行。