2009-07-28 4 views
0

J'ai posté à ce sujet avant, qui a contribué à me donner l'instruction SQL suivante:MySQL Weekday/compter week-end - Partie 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') ; 

Et cela me donne les résultats suivants:

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

I J'ai de la difficulté à essayer d'obtenir le format suivant:

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

Quelqu'un peut-il offrir de l'aide? Je serais très heureux ...

Vous pouvez voir mes schémas pour « utilisateur » et « eventcal » à: MySQL/PHP Algorithm for Weekday/Weekend count (per month)

Répondre

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

Vous voulez faire vos agrégations (SOMME dans ce cas) dans le SELECT et GROUP BY comment vous voulez les totaliser (par fname, par MOIS).