A. 如何用sql的日期函數,分別查出1月~12月每個月的銷售金額
一般情況下數據是按日期存到資料庫中的,但考慮到某些月份是無數據的,可用如下語句:
1、創建測試表及插入測試數據:
create table sale
(id int,
name varchar(10),
sdate datetime,
money int)
insert into sale values (1,'西瓜','2015-01-01',10)
insert into sale values (2,'香蕉','2015-01-05',20)
insert into sale values (3,'蘋果','2015-02-01',60)
insert into sale values (4,'葡萄','2015-02-23',345)
insert into sale values (5,'柚子','2015-04-23',10)
insert into sale values (6,'牛奶','2015-05-12',67)
insert into sale values (7,'地瓜','2015-06-01',10)
insert into sale values (8,'土豆','2015-07-01',10)
2、執行語句:
with t as
( select '2015-'+right('0'+cast(number+1 as varchar),2) number from master..spt_values where type='p' and number<=11 )
select t.number month,SUM(isnull(b.money,0)) money
from t left join sale b on
t.number=CONVERT(varchar(7),b.sdate,120)
group by t.number
結果截圖:
B. SQL查詢最近三個月的數據(查詢最近幾天,幾
1、創建測試表,create table test_date2(id number, v_date date);
C. sql 求出連續三個月以上用戶金額為0的數據
創建表,插入數據:
createtabletest
(年度varchar(4),
月份varchar(2),
識別號varchar(20),
店名稱varchar(50),
金額int)
insertintotestvalues(2016,1,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,2,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,3,'2201041958080801','大慶市薩爾圖區許馳比薩店',0)
insertintotestvalues(2016,3,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,3,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,4,'2201041958080801','大慶市薩爾圖區許馳比薩店',0)
insertintotestvalues(2016,4,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,4,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,5,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,5,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,6,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,6,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,7,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,9,'12232700556141546K','大興安嶺地區建設工程交易中心',0)
insertintotestvalues(2016,10,'2201041958080801','大慶市薩爾圖區許馳比薩店',0)
insertintotestvalues(2016,10,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,10,'2201041958080801','綏化市北林區城市比薩綏化店',0)
insertintotestvalues(2016,10,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,11,'12232700556141546K','大興安嶺地區建設工程交易中心',0)
insertintotestvalues(2016,12,'12232700556141546K','大興安嶺地區建設工程交易中心',0)
執行:
withtas
(select年度+right('0'+月份,2)+'01'日期,識別號,店名稱,金額,row_number()over(partitionby店名稱orderby年度+right('0'+月份,2)+'01')rnfromtestwhere金額=0)
selectsubstring(a.日期,1,4)年份,substring(a.日期,5,2)月份,a.識別號,a.店名稱,a.金額fromta,
(selectt2.日期,t2.店名稱fromtt1leftjointt2on
t1.店名稱=t2.店名稱anddatediff(mm,t2.日期,t1.日期)=1andt1.rn-t2.rn=1wheret2.日期isnotnull
union
selectt1.日期,t1.店名稱fromtt1leftjointt2on
t1.店名稱=t2.店名稱anddatediff(mm,t2.日期,t1.日期)=1andt1.rn-t2.rn=1wheret2.日期isnotnull)b
wherea.日期=b.日期anda.店名稱=b.店名稱
anda.店名稱in
(selecta.店名稱fromta,
(selectt2.日期,t2.店名稱fromtt1leftjointt2on
t1.店名稱=t2.店名稱anddatediff(mm,t2.日期,t1.日期)=1andt1.rn-t2.rn=1wheret2.日期isnotnull
union
selectt1.日期,t1.店名稱fromtt1leftjointt2on
t1.店名稱=t2.店名稱anddatediff(mm,t2.日期,t1.日期)=1andt1.rn-t2.rn=1wheret2.日期isnotnull)b
wherea.日期=b.日期anda.店名稱=b.店名稱groupbya.店名稱havingcount(*)>=3)
orderbya.店名稱,a.日期
結果:
有可能是寫麻煩了,先看看吧
D. SQL查詢最近三個月的數據(查詢最近幾天,幾年
1、SQL語句條件:「當前月」 - 「數據表中存儲的月份」 > 3
2、「當前月」:利用Oracle的內置時間函數
3、「數據表中存儲的月份」:
(1)如果是單獨一個欄位存儲的月份,直接訪問該月份欄位
(2)如果是使用一個欄位存放的日期,需要利用內置的時間函數或字元串函數,對該欄位進行解析,以提取出月份來
E. Sql查詢連續月份的值
先 Group By 出來每個用戶的登陸月份,使用 ROW_NUMBER() 函數給每個用戶一個排序的序號。然後用用戶的登陸月份與序號相減,如果月份連續,則相減後的數就是一樣的。這樣就能找到連續的月份了。
F. 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)
(6)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)
G. SQL 篩選3個月連續消費增加的客戶
with c_9 as
select clientid,sum(nvl(amount,0)) money from T where date >= to_date('20150901','yyyy-mm-dd') and t.date <= to_date('20150930','yyyy-mm-dd') group by clientid,
c_10 as select clientid,sum(nvl(amount,0)) money from T where date >= to_date('20151001','yyyy-mm-dd') and t.date <= to_date('20151031','yyyy-mm-dd') group by clientid,
c_11 as select clientid,sum(nvl(amount,0)) money from T where date >= to_date('20151101','yyyy-mm-dd') and t.date <= to_date('20151130','yyyy-mm-dd') group by clientid
select c_9.clientid,c_11.money - c_10.money as money 1,c_10.money - c_9.money as money 2
from c_9,c_10,c_11 where c_9.clientid = c_10.clientid and c_9.clientid = c_11.clientid
group by c_9.clientid having c_11.money - c_10.money > 0 and c_10.money - c_9.money > 0
H. 求助——SQL語句,目前已知每個id每月的交易額,怎麼查詢每個月每個id近半年的交易總額
關聯取月份最近6個月的數據,按id,月份分組匯總交易額就可以了
跟1一樣,就是按交易總額排序取前100
1.
select ao.id,ao.state_date,sum(ao.amount) amount from tab_order ao
left join tab_order so on so.id = ao.id and so.state_date between ao.state_date-5 and ao.state_date
group by ao.id,ao.state_date
2.
select * from
(select ao.id,ao.state_date,sum(ao.amount) amount from tab_order ao
left join tab_order so on so.id = ao.id and so.state_date between ao.state_date-3 and ao.state_date
group by ao.id,ao.state_date
order by amount desc
) limit 100
I. sql 查詢 3個月內
DATEDIFF 函數 [日期和時間]格式:DATEDIFF ( date-part, date-expression-1, date-expression-2 );功能:
返回兩個日期之間的間隔,即date-expression-2 減 date-expression-1的以date-part為單位的值。例子:SELECT datediff( month, '1999/07/19', '1999/08/23' );//返回 1
SELECT datediff( day, '1999/07/19 00:00', '1999/07/23 23:59' );//返回 4----------------------------------------------------------------------------------------------------修改:select * from OrderList where UserName='"&Session("UserName")&"' and datediff(Month,BuyTime,getdate(),Now) <=3"