2009-07-28 40 views
0

我之前已经张贴了关于这一点,这有助于给我下面的SQL:MySQL的工作日/周末计数 - 第二部分

SELECT fname, MONTH(eventDate) , IF(WEEKDAY(eventDate) <5, 'weekday', 'weekend') AS 
DAY , COUNT(*) 
FROM eventcal AS e 
LEFT JOIN users AS u ON e.primary = u.username 
GROUP BY fname, MONTH(eventDate) , IF(WEEKDAY(eventDate) <5, 'weekday', 'weekend') ; 

这一点让我得到以下结果:

fname MONTH(eventDate) DAY  COUNT(*) 
Kevin 7     weekday  3 
Kevin 7     weekend  1 
Missy 7     weekday  3 
Missy 7     weekend  1 

我在尝试实现以下格式时遇到了一些麻烦:

fname MONTH(eventDate) Weekday COUNT  WEEKEND COUNT 
Kevin 7     3     1 
Missy  7     3     1 

任何人都可以提供一些帮助吗?我将不胜感激......

你可以看到我的模式为“用户”和“eventcal”在:在SELECT MySQL/PHP Algorithm for Weekday/Weekend count (per month)

回答

2
SELECT 
    fname, 
    MONTH(eventDate), 
    SUM(IF(WEEKDAY(eventDate) < 5,1,0)) AS WeekdayCount, 
    SUM(IF(WEEKDAY(eventDate) >= 5,1,0)) AS WeekendCount 
FROM eventcal AS e 
LEFT JOIN users AS u ON e.primary = u.username 
GROUP BY fname, MONTH(eventDate); 

你想要做你的聚合(SUM在这种情况下) ,GROUP BY如何让他们总计(由fname,MONTH)。