2016-03-16 7 views
9

ich eine Datenbanktabelle haben commits mit den folgenden Spalten zur Gruppe:Wie durch Woche in postgresql

id | Autorenname | autor_email | Autor_Datum (Zeitstempel) | total_lines

Beispielinhalte sind:

1 | abc | [email protected] | 2013-03-24 15:32:49 | 1234 
2 | abc | [email protected] | 2013-03-27 15:32:49 | 534 
3 | abc | [email protected] | 2014-05-24 15:32:49 | 2344 
4 | abc | [email protected] | 2014-05-28 15:32:49 | 7623 

Ich möchte ein Ergebnis erhalten, wie folgt:

id | name | week | commits 
1 | abc | 1 | 2 
2 | abc | 2 | 0 

ich online nach ähnlichen Lösungen gesucht, aber konnte nicht alle hilfreich diejenigen bekommen.

habe ich versucht, diese Anfrage:

SELECT  date_part('week', author_date::date) AS weekly, 
     COUNT(author_email)   
FROM  commits 
GROUP BY weekly 
ORDER BY weekly 

Aber es ist nicht das richtige Ergebnis.

+0

Wie ist es falsch? Was ist das Problem? –

Antwort

19

Wenn Sie mehrere Jahre haben, sollten Sie auch das Jahr berücksichtigen. Eine Möglichkeit ist:

SELECT date_part('year', author_date::date) as year, 
     date_part('week', author_date::date) AS weekly, 
     COUNT(author_email)   
FROM commits 
GROUP BY year, weekly 
ORDER BY year, weekly; 

Eine natürliche Art und Weise, dies zu schreiben verwendet date_trunc():

SELECT date_trunc('week', author_date::date) AS weekly, 
     COUNT(author_email)   
FROM commits 
GROUP BY weekly 
ORDER BY weekly; 
+0

Danke, dass es funktioniert :) – user6058071

+0

@GordonLinoff: Wie können wir Null Commit Wochen auch in dieser Abfrage enthalten? Ich habe dieses getestet und es gibt alle Zeilen mit mindestens einem Commit. –

+0

@JilsonThomas. . . Wenn Sie eine Frage haben, ist es besser, sie als Frage zu stellen als in einem Kommentar. –

Verwandte Themen