有一个大表T的这部分;
+---------------+------------+
| session_id | visit_time |
+---------------+------------+
| 4f89cebc109f9 | 1334431476 |
| 4f89cf283d21c | 1334431528 |
| 4f89cf283d21c | 1334431534 |
| 4f89cf3b350a6 | 1334431547 |
| 4f89cf42ab640 | 1334431554 |
+---------------+------------+
我想在工作日找到session_id的数量。 Session_id不是主键。所以我试过了:
select count(distinct(session_id)) from T group by weekday(from_unixtime(time))
但是它不起作用,因为如果session_id
在两个不同的星期日有visit_time
,那么它会将它们计为1
,尽管它在相同{{1}时正确计数为1在同一个星期天有session_id
。
预期的事情是:我想知道有多少会话ID有太阳,星期一等访问日。如果一个session_id在两个不同的星期天访问过,那么它们会被计算两次,但如果在同一个星期天,那么只有1计数。 那我怎么能在Mysql中做呢?
答案 0 :(得分:4)
使用WEEK
代替WEEKDAY
SELECT WEEK(FROM_UNIXTIME(time)) WeekNo,
DATE_FORMAT(FROM_UNIXTIME(time),'%a') WeekName,
COUNT(DISTINCT(session_id))
FROM T
GROUP BY WEEK(FROM_UNIXTIME(time)),
DATE_FORMAT(FROM_UNIXTIME(time),'%a')