求一个使用mysql进行小计的语句

桾楉叁杄 2011-03-24 11:49:35
现有表如下

UserID GroupName limits1 limits2 limit3
1 组1 1 2 3
2 组1 4 5 6
3 组2 7 8 9
4 组2 10 11 12

然后用语句执行后的结果为

UserID GroupName limits1 limits2 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

求此语句 要Mysql的
...全文
258 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-03-24
  • 打赏
  • 举报
回复
select * from 现有表
union all
select 'UserID',GroupName,sum(limits1),sum(limits2),sum(limits3) from 现有表
shine333 2011-03-24
  • 打赏
  • 举报
回复
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

'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
'合计', '', 22, 26, 30
帮你加了个合计
桾楉叁杄 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vipper23 的回复:]

SQL code
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,'小计'……
[/Quote]

怎的特接近,但是如果我都不知道我有多少个组,都叫什么的话 我该怎么求呢?

oracle 能求出来我知道
vipper23 2011-03-24
  • 打赏
  • 举报
回复
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)



这样?
桾楉叁杄 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]

select * from 现有表
union all
select 'UserID',GroupName,sum(limits1),sum(limits2),sum(limits3) from 现有表
[/Quote]

这个只是算总计的,不能算小计吧?

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧