代码之家  ›  专栏  ›  技术社区  ›  Fez Vrasta

计算一周中每一天的出现次数

  •  0
  • Fez Vrasta  · 技术社区  · 13 年前

    我有这张桌子:

    | name | gender | date             |
    ------------------------------------
    | Foo  | male   | 2013-09-16 10:23 |
    | Name | male   | 2013-09-16 09:10 |
    | Red  | male   | 2013-09-15 09:10 |
    | Bar  | female | 2013-09-15 10:10 |
    etc...
    

    我需要通过过滤获得一周中每天的访问次数 gender .

    所以,如果我算上雄性,我应该得到:

    1: 2 visits
    2: 0 visits
    3: 0 visits
    4: 0 visits
    5: 0 visits
    6: 0 visits
    7: 1 visit
    

    查询应为:

    SELECT FROM table
    WHERE gender = 'male'
    GROUP BY DAYOFWEEK
    

    我的查询不起作用,所以我在这里问是否有人知道如何使其起作用。。。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Carsten Massmann    13 年前

    尝试

    SELECT dayofweek(date) dayofweek, gender, count(*) count
    FROM table
    GROUP BY DAYOFWEEK(date), gender
    

    编辑:

    如果你想周一为1,周日为7,你也可以这样做

    SELECT (dayofweek(date)+5)%7+1 dayofweek, gender, count(*) count
    FROM table
    GROUP BY (dayofweek(date)+5)%7+1, gender
    

    如果你想避免 if 建筑

        2
  •  1
  •   Nisarg    13 年前

    使用 WEEKDAY() 相反,它从周一开始。

    SELECT WEEKDAY(date) weekday, gender, count(*) count
    FROM table
    GROUP BY WEEKDAY(date), gender
    

    如果需要从索引1开始,请使用或WEEKDAY()+1。

    SELECT (WEEKDAY(date)+1) weekday, gender, count(*) count
    FROM table
    GROUP BY WEEKDAY(date), gender