最近在幫廠商的程式寫一個統計資料
他們需求是能夠分年,月,季的方式統計出有在線上活動的會員人數
紀錄活動的資料表是這樣設計的
Field Type
--------- ----------
account varchar(20)
loginTime datetime
資料表如下:
account | loginTime |
five | 2008-06-05 10:24:12 |
... | ... |
比較笨的方法是一行一行讀出後再用程式做整理
比較聰明的方法是用SQL語法直接分年,月,季取出資料來
假設我們要查詢的時間範圍是2008-01-01~2008-12-31
用MySQL環境之下所下的指令為
年:
select year(logintime) as year,count(distinct(account)) as total
from logintime
WHERE logintime between '2008-01-01' and '2008-12-31'
group by year(logintime)
year | total |
2008 | 1 |
季:
select year(logintime) as year,CEILING(month(logintime)/3) as season, count(distinct(account)) as total
from logintime
WHERE logintime between '2008-1-01' and '2008-12-31'
group by year(logintime),CEILING(month(logintime)/3)
year | season | total |
2008 | 2 | 1 |
月:
select year(logintime) as year, month(logintime) as month, count(distinct(account)) as total
from logintime
WHERE logintime between '2008-1-01' and '2008-12-31'
group by year(logintime),month(logintime)
year | month | total |
2008 | 6 | 1 |
mysql function解說:
1.distinct :表示不取重複資料
2.CEILING :表示無條件進位成整數
3.year:表示取年
4.month:表示取月
5.count:表示取筆數
留言列表