『壹』 mysql 統計每月的數量 sql
數據表中不存在的月份也要顯示,建議創建一個從1到12月份的表作為比對表。如果不方便創建月份比對表則可以用select 1到12的辦法來虛擬這個月份比對表,但是語句會有些冗長。請參考下列寫法:
selectmonths.year,months.month,
concat(ifnull(t.sumMonthNum,'0'),
'/',months.sumYearNum)as`月/年比`
from
(select*from
(selectyear(time)asyear,
sum(num)assumYearNum
fromabcgroupbyyear(time))years,
(select1asmonthunionall
select2unionall
select3unionall
select4unionall
select5unionall
select6unionall
select7unionall
select8unionall
select9unionall
select10unionall
select11unionall
select12)months)monthsleftjoin
(selectyear(time)asyear,
month(time)asmonth,
sum(num)assumMonthNum
fromabcgroupbyyear(time),month(time))t
onmonths.month=t.month
orderbymonths.year,months.month;
實驗截圖如下:
源表數據
『貳』 求高手幫寫一SQL語句 按月統計的
統計每個id每個月的訪問次數。
SELECT userid, SUBSTRING(accessTime, 1, 6) AS Expr2, COUNT(*) AS Expr1
FROM TableA
GROUP BY userid, SUBSTRING(accessTime, 1, 6)
此語句查詢結果:
1000001 201001 2
1000003 201002 2
1000001 201003 1
1000002 201003 1
------------------
你的查詢和我的一樣。你想要accessTime,這是不可能的,因為SQL語句中使用了group by子句,那麼select的欄位只能在group by的字句里。
你要清楚,你現在做的是統計,不是查明細。如果查明細的話,再寫一條語句好了。
『叄』 sql 分類按月統計
方法一:這種方法列名是固定的。
select 名稱,
sum(case when substring(convert(varchar(7),日期,120),6,2)='09' then 出售數量 else 0 end) as '9月',
sum(case when substring(convert(varchar(7),日期,120),6,2)='10' then 出售數量 else 0 end) as '10月'
from 表
group by 名稱
方法二:這種方法雖然麻煩一些,但是支持列名不確定的情況。
declare @sql varchar(2000)
declare @mon varchar(2)
set @sql = 'select 名稱'
select @sql = @sql + ',sum(case mon when '''+mon+''' then 出售數量 end) ['+mon+'月]'
from (select distinct substring(convert(varchar(7),日期,120),6,2) mon from 表) as a
select @sql = @sql+' from 表 group by 名稱'
exec(@sql)
『肆』 sql 語句怎麼按照月去統計數據!
Select foodid, month(datetime), sum(mak) from [tablename1] where year(datetime) = 2013 group by foodid,month(datetime)
『伍』 求一個按月統計數據的SQL語句,表如下:
用Oracle SQL表結構:Mytable(userid,mm,PayMoney)
Month(id,mm)
select id,x.mm Month,decode(sign(to_date(x.mm,'yyyy-mm')-to_date('2012-08','yyyy-mm')),1,nvl(to_char(payMoney),'null'),nvl(payMoney,0)) PayMoney
from Month x,mytable y where x.id=y.userid(+) and x.mm=y.mm(+);
在程序中可以吧'2012-08'換成變數就可以了。
『陸』 SQL語句怎麼按照月統計數量
selectconvert(varchar(7),datetime,120)date,foodid,userid,sum(mak)fromtablename
groupbyconvert(varchar(7),datetime,120),foodid,userid
你測試看看。是不是這樣。
『柒』 sql 查詢每個月的記錄數量
SELECT LEFT(CONVERT(VARCHAR(10), [入庫時間], 120), 7) AS [月份], COUNT(*) AS [數量]
FROM [表名]
GROUP BY LEFT(CONVERT(VARCHAR(10), [入庫時間], 120), 7)
『捌』 SQL 查詢每個月統計的數據。
select 月份,sum(isnull(count,0)) from A group by 月份
你是不是整個月沒數據的就自動要補一條記錄為0的
我想了一下,簡單的這樣寫,都不可能出現補零的數據,畢竟這個月份的數據並沒有出現在表中。
看實際情況,必要時候使用union
既然知道只有兩個月的,那就補上
select * from
(
select 月份,sum(isnull(count,0)) from A group by 月份
union all
select '2012-02',0
union all
select '2013-05',0
) a
order by 月份
不過話說你是不是年份弄錯了,從2012直接跳到2013?
我這個方法還搞不定嗎?