2016-06-05 12 views
0

Im Moment habe ich die folgende (My) SQL-Anweisung, die die Anzahl der Einträge basierend auf der Stunde zurückgibt.SQL-Gruppe: mehrere Dinge zählen

SELECT 
    COUNT(*) AS amount 
    HOUR(date) AS hour 
    -- [1] 
FROM 
    table 
GROUP BY 
    HOUR(date) 

Aber ich möchte eigentlich ein anderes Ergebnis, das die Anzahl der Tage enthält, die die Stunde erschien Basicly so etwas wie:

[1] = COUNT(DAY(date), MONTH(date), YEAR(date)) AS day_count 

Beispiel:

id | date 
0 | 01/01/2001 5:15 
1 | 01/01/2001 5:10 
2 | 01/01/2001 6:03 
3 | 01/01/2001 7:04 
4 | 02/01/2001 5:00 

Rückkehr sollte

amount | hour | day_count 
3  | 5  | 2 
1  | 6  | 1 
1  | 7  | 1 
+0

Können Sie Beispieldaten und erwartete Ergebnisse angeben? lts? Deine Frage nicht vollständig verstanden. – sgeddes

+0

Okay, ich habe ein Beispiel hinzugefügt. – random314

Antwort

0

Ich glaube, Sie müssen nur die Tage von Stunde trennen und Tag und Gruppe von ihnen .. .

SELECT count(*) as `amount` 
    , count(hour(date)) as `Hour` 
    , count(day(date)) as `Day_Count` 
FROM table 
GROUP BY hour(Date), day(date) 
+0

Danke, das scheint zu funktionieren! Aber ich denke "Tag (01/01/2001)" = "Tag (01/02/2001)" = 1, also gruppiere ich auch nach Monat und Jahr. – random314

+0

Ah ja; es würde. Ich nahm an, du machst nur eine Sache Tag für Tag Stunde über Stunde und kümmerst dich nicht um den Monat/das Jahr. – xQbert

Verwandte Themen