56,687
社区成员
发帖
与我相关
我的任务
分享
SELECT UserID, IF(ord=2,'',GroupName) AS GroupName, limits1, limits2, limits3
FROM
(
SELECT UserID, GroupName, limits1, limits2, limits3, 0 AS ord
FROM tbl
UNION ALL
SELECT '小计' AS UserID, GroupName, sum(limits1) AS limits1, sum(limits2) AS limits2, sum(limits3) AS limits3, 1 AS ord
FROM tbl
GROUP BY GroupName
UNION ALL
SELECT '合计' AS UserID, MAX(GroupName), sum(limits1) AS limits1, sum(limits2) AS limits2, sum(limits3) AS limits3, 2 AS ord
FROM tbl
) x
ORDER BY x.GroupName, ord, UserID
mysql> select ifnull(userid,'小计') ,groupname,sum(limits1),sum(limits2),sum(limit3) from tt where groupname='组1' group by userid with rollup
-> union all
-> select ifnull(userid,'小计') ,groupname,sum(limits1),sum(limits2),sum(limit3) from tt where groupname='组2' group by userid with rollup
-> ;
+-----------------------+-----------+--------------+--------------+-------------+
| ifnull(userid,'小计') | groupname | sum(limits1) | sum(limits2) | sum(limit3)|
+-----------------------+-----------+--------------+--------------+-------------+
| 1 | 组1 | 1 | 2 | 3 |
| 2 | 组1 | 4 | 5 | 6 |
| 小计 | 组1 | 5 | 7 | 9 |
| 3 | 组2 | 7 | 8 | 9 |
| 4 | 组2 | 10 | 11 | 12 |
| 小计 | 组2 | 17 | 19 | 21 |
+-----------------------+-----------+--------------+--------------+-------------+
6 rows in set (0.00 sec)