0

我有这张桌子:

| 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

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

4

2 回答 2

2

尝试

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构造......

于 2013-09-16T07:02:15.227 回答
1

请改用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
于 2013-09-16T07:30:07.697 回答