首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个值分组为同一组进行分组。

将多个值分组为同一组进行分组。
EN

Stack Overflow用户
提问于 2013-05-02 13:26:57
回答 3查看 117关注 0票数 3

我有一张类似的桌子:

代码语言:javascript
复制
ID      WEEK
1       1
2       1
3       1
4       2
5       2
6       3
7       3
8       3

这是我当前的查询:

代码语言:javascript
复制
SELECT COUNT(*), `week` FROM data GROUP BY `week`

这是一个sqlfiddle http://sqlfiddle.com/#!2/bfdb6/2/0

我需要的是每两周将行分组一次。

所以,不是这样的:

代码语言:javascript
复制
COUNT(*)    WEEK
3           1
2           2
3           3
3           4

我会得到:

代码语言:javascript
复制
COUNT(*)    WEEK
5           1
5           2
6           3
3           4

每周都有下一周的计数。

议题经修正:

我应该清楚自己真正需要什么。

与其将第一周和第三周分组,我需要的是每两周分组一次

第一周和第二周、第二周和第三周、第三周和第四周、第四周和第五周等

如果可能,将自动生成sql,但可以在查询外部为周分组生成sql。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-02 14:41:40

我想我有给你的..。

首先,从数据中找出不同的星期.然后,加入数据,但特别是在周或周+1。

我将此应用于您现有的SQLFiddle,它看起来很有效。

代码语言:javascript
复制
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`
票数 1
EN

Stack Overflow用户

发布于 2013-05-02 13:30:33

创建一个表示组桶的案例表达式:

代码语言:javascript
复制
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将创建您想要的,因为

代码语言:javascript
复制
 week    week/2
   0         0
   1         0
   2         1
   3         1
   4         2
   5         2

..etc。

那就试试这个吧:

代码语言:javascript
复制
SELECT COUNT(*), week/2 
FROM data 
GROUP BY week/2 
票数 1
EN

Stack Overflow用户

发布于 2013-05-02 13:41:40

你可以找这个

代码语言:javascript
复制
   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

DEMO HERE

输出

代码语言:javascript
复制
  COUNT    week
    6       1
    2       2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16339251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档