我有一张类似的表:
ID WEEK
1 1
2 1
3 1
4 2
5 2
6 3
7 3
8 3
这是我目前的查询:
SELECT COUNT(*), `week` FROM data GROUP BY `week`
这是一个sqlfiddle http://sqlfiddle.com/#!2/bfdb6/2/0
我需要的是每2周将行分组到相同的COUNT中。
所以不要这样:
COUNT(*) WEEK
3 1
2 2
3 3
3 4
我会得到:
COUNT(*) WEEK
5 1
5 2
6 3
3 4
每周还会有下一周的COUNT加入。
问题修正:
我应该清楚我真正需要的东西。
不是将第1周和第3周分组,而是我需要的是每两周分组。
因此按第1周和第2周,第2周和第3周,第3周和第4周,第4周和第5周等分组
尽可能自动,但可以在查询周围生成一周的分组。
感谢。
答案 0 :(得分:1)
创建一个表示组存储桶的案例表达式:
SELECT COUNT(*), case When week In (1,3) Then 'W13' Else 'W2' End
FROM data
GROUP BY case When week In (1,3) Then 'W13' Else 'W2' End
根据编辑的帖子,如果周是整数,除以2将创建你想要的,因为
week week/2
0 0
1 0
2 1
3 1
4 2
5 2
.......。等。
所以试试这个:
SELECT COUNT(*), week/2
FROM data
GROUP BY week/2
答案 1 :(得分:1)
你可以寻找这个
SELECT
case When week In (1,3) Then ( select count(week) from data
where week in (1,3) )
else ( select count(week) from data
where week =2 ) end count , week
FROM data
group by count
order by count desc
输出
COUNT week
6 1
2 2
答案 2 :(得分:1)
我想我已经帮你了......
首先,从数据中获取不同的周数...... 然后,加入数据,但特别是在一周或一周+1
我将它应用于您现有的SQLFiddle,它似乎有效。
select
JustWeeks.`week`,
Count(*) as TwoWeekSum
from
( select distinct
`week`
from
data ) JustWeeks
JOIN data
ON JustWeeks.`week` = data.`week`
OR JustWeeks.`week` +1 = data.`week`
group by
JustWeeks.`week`