mysql 中关于统计的SQL语句怎么写

[img]http://dl.iteye.com/upload/attachment/472291/162b1ac4-5083-332c-8b96-aab0dfbbc2f3.gif[/img]
如图所示的一个表的数据

我需要的结果如下:

customerId type orderNum shkd srmb ahkd armb shkd_2 srmb_2 ahkd_2 armb_2
113 0 1 2000 900 2000 800 0 0 0 0
116 0 2 4000 900 3300 900 0 0 0 0
430 2 3 350 698 300 600 1100 600 0 0
433 1 1 1000 500 0 0 0 0 0 0
603 1 1 300 600 0 0 0 0 0 0

请问sql 语句怎么写才可以得到这种结果,谢谢

也就是把customerId中重复的记录,并且 type 不相同的,合并为一个记录

3个回答

首先要确定你重复的记录最多有多少条,我这里假设最多有两条重复customerid的记录
select
customerId,
case when count(*)>=2 then 2 else max(type) end as type,
sum(orderNum) as orderNum,
SUBSTRING_INDEX(group_concat(shkd),',',1) as shkd,
SUBSTRING_INDEX(group_concat(srmb),',',1) as srmb,
SUBSTRING_INDEX(group_concat(ahkd),',',1) as ahkd,
SUBSTRING_INDEX(group_concat(armb),',',1) as armb,
SUBSTRING_INDEX(group_concat(shkd),',',-1) as shkd2,
SUBSTRING_INDEX(group_concat(srmb),',',-1) as srmb2,
SUBSTRING_INDEX(group_concat(ahkd),',',-1) as ahkd2,
SUBSTRING_INDEX(group_concat(armb),',',-1) as armb2
from tableName group by customerId

你好,问题描述还是没有太清楚,能否写出需要统计的字段,以及其规律?
比如OrderNum 字段中 id为430出现两列,那么统计出来就应该是1+2=3

假设test3 表有两个字段 customerid,ordernum
根据每个customerid统计ordernum总和

select sum(t.ordernum),t.customerid from test3 t group by t.customerid;

不知道能不能提供一点思路。。

搞不定,同样求解。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐