最近在幫廠商的程式寫一個統計資料
他們需求是能夠分年,月,季的方式統計出有在線上活動的會員人數
紀錄活動的資料表是這樣設計的
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:表示取筆數
arrow
arrow
    全站熱搜

    45 發表在 痞客邦 留言(2) 人氣()