2016-05-17 8 views
2

Ich habe eine Datetime-Spalte 'ts' (mit Amazon Redshift). Wie kann ich Daten nach 30 Tagen gruppieren? Zum Beispiel, wenn ich eine Abfrage wie dieseSQL-Gruppe nach Anzahl der Tage

select count(*) from table where ts > '2016-01-19' and ts < '2016-03-22' 

Wie kann ich dies als Gruppe folgende Gruppen ohne diese Daten explizit spezifiziert

2016-01-19 to 2016-02-18 
2016-02-19 to 2016-03-18 

Ich habe da Daten von 2016.03.19 weiter ignoriert sind nicht viele Tage um einen Monat zu bilden?

Irgendeine Idee?

Antwort

0

So etwas wie dieses

SELECT CASE 
     WHEN ts > '2016-01-19' 
       AND ts < '2016-02-18' THEN '2016-01-19 to 2016-02-18' 
     WHEN ts > '2016-02-19' 
       AND ts < '2016-03-18' THEN '2016-02-19 to 2016-03-18' 
     END, 
     Count(*) 
FROM table 
WHERE ts > '2016-01-19' 
     AND ts < '2016-03-22' 
GROUP BY CASE 
      WHEN ts > '2016-01-19' 
       AND ts < '2016-02-18' THEN '2016-01-19 to 2016-02-18' 
      WHEN ts > '2016-02-19' 
       AND ts < '2016-03-18' THEN '2016-02-19 to 2016-03-18' 
      END