Ⅰ sql語句統計每天、每月、每年的銷售總額
一、SQL語句統計每年的銷售總額
select year(ordertime) 年,
sum(Total) 銷售合計
from 訂單表
group by year(ordertime)
二、SQL語句統計每月的銷售總額
select year(ordertime) 年,
month(ordertime) 月,
sum(Total) 銷售合計
from 訂單表
group by year(ordertime),
month(ordertime
三、SQL語句統計每日的銷售總額
select year(ordertime) 年,
month(ordertime) 月,
day(ordertime) 日,
sum(Total) 銷售合計
from 訂單表
group by year(ordertime),
month(ordertime),
day(ordertime)
(1)sql日期按年統計擴展閱讀
mysql查詢每天、每周、每月的數據方法
一、查詢每天的數據
SELECT
COUNT(1) AS countNumber,
DATE_FORMAT(createTime,'%Y-%m-%d') AS dateTime
FROM
testTable
GROUP BY DATE_FORMAT(createTime,'%Y-%m-%d')
二、查詢每周的數據
SELECT
COUNT(1) AS countNumber,
WEEK(createTime) as dateTime
FROM
testTable
GROUP BY WEEK(createTime)
三、查詢每月的數據:
SELECT
COUNT(1) AS countNumber,
MONTH(createTime) as dateTime
FROM
testTable
GROUP BY MONTH(createTime)
Ⅱ SQL: 一般情況按年分組,特殊年份按指定日期分組,SELECT語句怎麼寫
如果只是一年的話還好說,如果是三四年那就麻煩了,但是如果每一年都要這樣還反而簡單了,最怕的就是某些特殊要求,那樣不好寫。
我寫一個一年的,寫一個全部的。
這是一年的,可能casewhen不能這么直接放在groupby的後面,那麼可以先這么改造一下表,然後外面在套一層select就可以實現了。
select case when year(日期)=2017 and month(日期)<5 then '2017-05-01以前'
when year(日期)=2017 and month(日期)>4 then '2017-05-01至年底' else year(日期) end
年份,count(*) from table group by
(case when year(日期)=2017 and month(日期)<5 then '2017-05-01以前'
when year(日期)=2017 and month(日期)>4 then '2017-05-01至年底' else year(日期) end)
全部的
select concat(year(日期),case when month(日期)<5 then 1 else 2 end) 組合欄位,count(*) from table group by concat(year(日期),case when month(日期)<5 then 1 else 2 end)
其實是一樣的,就是把原表改了一下,只是這兩種情況是比較好改的,如果有三年或者四年是需要進行這樣的分組,那就麻煩了。如果有這種情況,建議在表中加一個標示欄位,那樣就能簡單一些了。
Ⅲ sql 從日期中提取年份,按年份求和
思路:先准備好整個時間段的月份,然後關聯統計就行了;
--mssql:
WITHTMPAS
(SELECT'1994-1-1'ASBEGAN_DATE,'1994-12-1'ASEND_DATE,100.00ASJS,
1200.00ASZJS
UNIONALL
SELECT'1995-1-1','1995-5-1',100.00,500.00
UNIONALL
SELECT'1995-6-1','1998-3-1',100.00,34000.00
)
,TMP1AS(SELECTDATEADD(MONTH,T.NUMBER,T1.BEGAN_DATE)AST_MONTH
FROMMASTER..SPT_VALUEST,
(SELECTMIN(BEGAN_DATE)ASBEGAN_DATE,
DATEDIFF(MONTH,MIN(BEGAN_DATE),MAX(END_DATE))AST_MONTH
FROMTMP)T1
WHERET.NUMBER<=T1.T_MONTHAND
T.TYPE='P')
SELECTDATENAME(YEAR,T1.T_MONTH)ASYEARS,SUM(T.JS)ASZJS
FROMTMPT
INNERJOINTMP1T1
ONT1.T_MONTH>=CAST(T.BEGAN_DATEASDATE)AND
T1.T_MONTH<=CAST(T.END_DATEASDATE)
GROUPBYDATENAME(YEAR,T1.T_MONTH),T.BEGAN_DATE
ORDERBYDATENAME(YEAR,T1.T_MONTH);
--oracle:
WITHTMPAS
(SELECT'1994-1-1'ASBEGAN_DATE,'1994-12-1'ASEND_DATE,100.00ASJS,
1200.00ASZJS
FROMDUAL
UNIONALL
SELECT'1995-1-1','1995-5-1',100.00,500.00
FROMDUAL
UNIONALL
SELECT'1995-6-1','1998-3-1',100.00,34000.00
FROMDUAL),
TMP1AS
(SELECTADD_MONTHS(BEGAN_DATE,LEVEL-1)T_MONTH
FROM(SELECTTO_DATE(MIN(BEGAN_DATE),'YYYY-MM-DD')BEGAN_DATE,
TO_DATE(MAX(END_DATE),'YYYY-MM-DD')END_DATE
FROMTMP)
CONNECTBYLEVEL<=MONTHS_BETWEEN(END_DATE,BEGAN_DATE)+1)
SELECTTO_CHAR(T_MONTH,'YYYY')ASYEARS,SUM(T.JS)ASZJS
FROMTMPT
INNERJOINTMP1T1
ONT1.T_MONTH>=TO_DATE(T.BEGAN_DATE,'YYYY-MM-DD')AND
T1.T_MONTH<=TO_DATE(T.END_DATE,'YYYY-MM-DD')
GROUPBYTO_CHAR(T_MONTH,'YYYY'),T.BEGAN_DATE
ORDERBYTO_CHAR(T_MONTH,'YYYY')
Ⅳ SQL如何按年份月份統計
select
left(convert(varchar(10),[datetime],120),7)
as
月份,sum(Amount)
as
總數
from
表
where
[datetime]<='你輸入的時間條件'
group
by
left(convert(varchar(10),[datetime],120),7)
根據你的數據結果格式重新修改了下:
select
cast(datepart(year,[datetime])
as
varchar)+'年'+cast(datepart(month,[datetime])
as
varchar)+'月'
as
月份,sum(Amount)
as
總數
from
表
where
[datetime]<='你輸入的時間條件'
and
datepart(year,[datetime])=left('你輸入的時間條件',4)
group
by
cast(datepart(year,[datetime])
as
varchar)+'年'+cast(datepart(month,[datetime])
as
varchar)+'月'
Ⅳ sql查詢數據,好多都需要按年份查詢,按年份查數據有哪幾種方式呢
第一種:
dateCol >= '2011-1-1' and dateCol < '2012-1-1'
第二種:
YEAR(dateCol) = 2011
第三種:
DATENAME(yy, dateCol) = '2011'
Ⅵ SQL按年度統計銷售額 怎麼寫
缺欄位,你倆表必須有個訂單id關聯,你自己查一下
如果存在這個訂單id的話
比如查2013年的
selectyear(訂單.訂購日期)年份,sum(訂單明細.單價*訂單明細.數量)銷售金額
from訂單,訂單明細where訂單,訂單id=訂單明細.訂單id
whereyear(訂單.訂購日期)=2013
groupbyyear(訂單.訂購日期)
Ⅶ sql 語句怎麼寫根據選擇的年份統計出該年下每個月的訂單總數
這是一些統計每天、每月、每年的銷售總額的查詢語句,給你參考:
1、每年
select year(ordertime) 年,
sum(Total) 銷售合計
from 訂單表
group by year(ordertime)
2、每月
select year(ordertime) 年,
month(ordertime) 月,
sum(Total) 銷售合計
from 訂單表
group by year(ordertime),
month(ordertime
3、每日
select year(ordertime) 年,
month(ordertime) 月,
day(ordertime) 日,
sum(Total) 銷售合計
from 訂單表
group by year(ordertime),
month(ordertime),
day(ordertime)
另外每日也可以這樣:
select convert(char(8),ordertime,112) dt,
sum(Total) 銷售合計
from 訂單表
group by convert(char(8),ordertime,112)
如果需要增加查詢條件,在from後加where 即可。
Ⅷ MSSQL數據按日、月、年統計如何設計
最簡單的方法是就用兩列,一列是日期,一列是當日數據
日期 數據值
20170421 100
20170422 300
類似上邊這樣
這樣的話,可以統計你所說的年月日的數據
Ⅸ SQL如何按年份月份統計
select left(convert(varchar(10),[datetime],120),7) as 月份,sum(Amount) as 總數
from 表
where [datetime]<='你輸入的時間條件'
group by left(convert(varchar(10),[datetime],120),7)
根據你的數據結果格式重新修改了下:
select cast(datepart(year,[datetime]) as varchar)+'年'+cast(datepart(month,[datetime]) as varchar)+'月' as 月份,sum(Amount) as 總數
from 表
where [datetime]<='你輸入的時間條件' and datepart(year,[datetime])=left('你輸入的時間條件',4)
group by cast(datepart(year,[datetime]) as varchar)+'年'+cast(datepart(month,[datetime]) as varchar)+'月'
Ⅹ sql 按時間統計
當然可以;
用行轉列就行了
--靜態寫法
select 單位,
sum(case when year(時間)=2005 and datepart(q,時間)=1 then 值 else 0 end) as 2005一季,
sum(case when year(時間)=2005 and datepart(q,時間)=2 then 值 else 0 end) as 2005一季,
..........
from table
group by 單位
豎向顯示時;
select 單位,
case when year(時間)=2005 and datepart(q,時間)=1 then '2005年第一季'
when when year(時間)=2005 and datepart(q,時間)=2
then '2005年第二季'
..........end as 顯示季,
sum(值) as 顯示值
from table
group by 單位,case when year(時間)=2005 and datepart(q,時間)=1 then '2005年第一季'
when when year(時間)=2005 and datepart(q,時間)=2
then '2005年第二季'
..........end