繁体   English   中英

按工作日分组

[英]Group by week day

拥有这部分大桌子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_timevisit_time ,那么它将它们计为1 ,尽管当同一个session_id在相同的星期天具有visit_time时它正确地计数为1。

预期的事情是:我想知道有多少session-id的访问日为sun,mon等。如果session_id在两个不同的星期日访问了,那么它们将被计数两次,但是如果在同一周日,则只有一个计数。 那么如何在Mysql中做到呢?

使用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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM