2016-03-16 16 views
9

Tôi đã bàn cơ sở dữ liệu commits với các cột sau:Làm thế nào để nhóm theo tuần trong postgresql

id | author_name | author_email | author_date (dấu thời gian) | total_lines

nội dung mẫu bao gồm:

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 

Tôi muốn để có được một kết quả như sau:

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

Tôi tìm kiếm trực tuyến cho các giải pháp tương tự nhưng couldnt nhận được bất kỳ những người hữu ích.

tôi đã cố gắng truy vấn này:

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

Nhưng không phải là kết quả đúng của nó.

+0

thế là nó không chính xác? Vấn đề là gì? –

Trả lời

19

Nếu bạn có nhiều năm, bạn nên tính cả năm. Một cách là:

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; 

Một cách tự nhiên hơn để viết này sử dụng date_trunc():

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

Cảm ơn nó đã làm việc :) – user6058071

+0

@GordonLinoff: Làm thế nào chúng ta có thể bao gồm không cam kết tuần cũng trong truy vấn này? Tôi đã thử nghiệm này và nó cung cấp cho tất cả các hàng với ít nhất một cam kết. –

+0

@JilsonThomas. . . Nếu bạn có câu hỏi, tốt hơn là đặt câu hỏi thay vì trong một nhận xét. –

Các vấn đề liên quan