2009-07-28 7 views
0

ich darüber vor gebucht haben, die mir die folgende SQL geben half:MySQL Wochentag/Wochenende zählen - Teil II

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

und das gibt mir die folgenden Ergebnisse:

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

I habe Probleme, das folgende Format zu erreichen:

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

Kann mir jemand Hilfe anbieten? Ich würde es sehr zu schätzen ...

Sie können meine Schemata für ‚user‘ und ‚eventcal‘ sehen: MySQL/PHP Algorithm for Weekday/Weekend count (per month)

Antwort

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

Sie möchten Ihre Aggregationen (SUM in diesem Fall) in der SELECT tun , und GROUP BY, wie Sie sie summieren möchten (nach fname, nach MONTH).