mysql中统计特定行问题

damonxx 2017-10-07 08:24:09
例如表A 有列t_id s_id ct_1 ct_2
数据如下
t_id s_id ct_1 ct_2
a a1 1000 800
a a2 100 100
a a3 50 50

对此表做统计,当 s_id='a2' 时,ct_1字段不计,但ct_2字段要统计,期望得到如下的结果
t_id s_id ct_1 ct_2
a a1 1000 800
a a2 100 100
a a3 50 50
a 合计 1050 950

求查询语句该怎么写?
用sum if(s_id='a2',0,ct_1)、group by with rollup等语句的话,得到的a2所在行的ct_1字段也为0了
...全文
150 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2017-10-09
  • 打赏
  • 举报
回复
如果你只是在汇总中不包含  s_id='a2' , 那么应该单独处理汇总
select * from A union all select null, null, sum(if(s_id='a2',0,ct_1)), sum(ct_2) from A
zjcxc 2017-10-09
  • 打赏
  • 举报
回复
drop temporary table if exists A;
create temporary table A(t_id varchar(10), s_id varchar(10), ct_1 int, ct_2 int);
insert A values
('a', 'a1', 1000, 800),
('a', 'a2', 100, 100),
('a', 'a3', 50, 50);
select t_id, s_id, sum(if(s_id='a2',0,ct_1)), sum(ct_2)
from a group by t_id, s_id with rollup
没发现问题 +------+------+---------------------------+-----------+ | t_id | s_id | sum(if(s_id='a2',0,ct_1)) | sum(ct_2) | +------+------+---------------------------+-----------+ | a | a1 | 1000 | 800 | | a | a2 | 0 | 100 | | a | a3 | 50 | 50 | | a | NULL | 1050 | 950 | | NULL | NULL | 1050 | 950 | +------+------+---------------------------+-----------+ 5 rows in set (0.00 sec)

56,677

社区成员

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

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