2013-01-25 315 views
2

有這部分大表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_idvisit_time在兩個不同的星期日,那麼它就會將他們爲1,雖然它正確地計算1相同,當session_id對同一週日visit_time

預期的事情是:我想知道有多少會話ID訪問日,太陽,星期一等。如果session_id已在兩個不同的星期日訪問,那麼他們會被計數兩次,但如果在同一個星期日,則只有1計數。 那麼我怎樣才能在Mysql中做到這一點?

+0

我不知道我明白你的周想幹什麼得到結果......組,工作日? –

+0

看看DATE_FORMAT – Strawberry

+0

根據你的句子「我想查找session_id weekday-wise的號碼」,預期結果「if same session_id has visit_time on two different sundend」,對於'session_id'是1。你想每天查找'session_id'的數量嗎? – Oswald

回答

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