2010-09-24 85 views
20

我有一個表REGDATE列,註冊日期(YYYY-MM-DD HH:MM:SS)。我想顯示一個直方圖(ExtJS),以瞭解用戶註冊的年份。我希望在過去的十二個月內就當前日期進行此操作,並按星期分組。最近12個月,每週一組

任何提示?

+0

其中SQL數據庫? – 2010-09-24 15:12:51

回答

20
在MySQL

SELECT COUNT(*), DATE_FORMAT(regdate, "%X%V") AS regweek FROM table GROUP BY regweek; 

SELECT COUNT(*), YEARWEEK(NOW(), 2) as regweek FROM table GROUP BY regweek; 

PostgreSQL中:

SELECT COUNT(*), EXTRACT(YEAR FROM regdate)::text || EXTRACT(WEEK FROM regdate)::text AS regweek FROM table GROUP BY regweek; 
+4

我嘗試了PostgreSQL並出現錯誤。必須在EXTRACT(年)後添加:: varchar。 – bluemihai 2014-04-09 20:38:15

+2

對於那些正在尋找PostgreSQL版本的人,Tom Gerken下面的例子比較好。它限制爲12個月,零填充日期,並處理日期時間到文本的轉換。 – keithhackbarth 2015-08-10 19:15:39

0

提示:(SQL)

SELECT CONVERT (VARCHAR(7), REGDATE, 120) AS [RegistrationMonth] 
FROM ... 
GROUP BY CONVERT (VARCHAR(7), REGDATE, 120) 
ORDER BY CONVERT (VARCHAR(7), REGDATE, 120) 
25

FWIW PostgreSQL中,Karaszi有問題的解答,但有一個更快的查詢:

SELECT date_trunc('week', REGDATE) AS "Week" , count(*) AS "No. of users" 
FROM <<TABLE>> 
WHERE REGDATE > now() - interval '12 months' 
GROUP BY 1 
ORDER BY 1; 

我基於這一關的Ben Goodacre

+0

這應該是被接受的答案;) – Todd 2017-10-27 20:30:31

3

工作也許這?

select to_char(REGDATE,'WW') "Week number", 
     count(*) "number of signups", 
from YOUR_TABLE 
where REGDATE > current_date-365 
group by to_char(REGDATE,'WW') 
order by to_char(REGDATE,'WW') 
+1

+1使用'TO_CHAR'。我想要獨特的一週(而不是一年一次),所以我用'to_char(regdate,'YYYY WW')',但是同樣的想法。 – tscizzle 2016-04-29 17:01:45

相關問題