SQL同期
1. sql按某一段時間篩選出內容後,且需要同時查出去年同期(去年相同時間段)的內容
-- 可以參考下,以下是MySQL的寫法
select count(1) from a where txdate between '2019-01-01' and '2019-07-01'
UNION
select count(1) from a where txdate between DATE_SUB('2019-01-01',INTERVAL 1 year) and DATE_SUB('2019-07-01',INTERVAL 1 year)
2. sql 求上月數和上年同期數,和上年同期累計
---上月
declare @lastmonth varchar(50)
set @lastmonth=str(year(getdate()))+'-'+ltrim(str(month(getdate())-1))
select sum(數據) from 表 where 日期 like @lastmonth=str(year(日期))+'-'+ltrim(str(month(日期)))
同期和上年同期的累計和這個類似就是處理下時間的問題
3. sql如何查詢歷史同期記錄
歷年來所有日期相同的記錄...
就是說每年的同一個月同一天就是相同的記錄吧?
思路是在日期中截取月份,天數。對這兩項進行比較。
1 怎樣截取:DATE類型或VARCHAR類型的截取方式不同,具體你可以查;
2 查詢天數和月份都相同的ID,再根據ID查詢完整的記錄
以上只是思路.....
4. 請教Oracle計算同比和環比sql語句
首先明確概念:
環比增長率=(本期數-上期數)/上期數*100%反映本期比上期增長了多少。
同比增長率=(本期數-同期數)/同期數*100%指和去年同期相比較的增長率。
數據表名:d_temp_data
查詢數據如下:
查詢的sql語句如下:
selecta.*,
nvl(round(money/lag(money)over(orderbyid)*100,2),'0')||'%'"同比",
nvl(round(money/lag(money)over(partitionbymonorderbyid)*100,2),'0')||'%'"環比"
fromd_temp_dataa
idinameyearmonmoney同比環比
----------------------------------------------------------------------
1 1 飛馬股 2013 01 300 0% 0%
2 2 飛馬股 2013 02 270 90% 0%
3 3 飛馬股 2013 03 350 129.63% 0%
4 4 飛馬股 2013 04 180 51.43% 0%
5 5 飛馬股 2013 05 500 277.78% 0%
6 6 飛馬股 2013 06 400 80% 0%
7 7 飛馬股 2014 01 210 52.5% 70%
8 8 飛馬股 2014 02 240 114.29% 88.89%
9 9 飛馬股 2014 03 320 133.33% 91.43%
10 10 飛馬股 2014 04 480 150% 266.67%
11 11 飛馬股 2014 05 400 83.33% 80%
5. sql語句計算同期前一年的數量
有個函數可以取年份的,語法是這樣的DATEPART(datepart,date)
,如果你表裡有個欄位是記錄時間的,假設表為A,欄位為time,你可以這么寫,希望能夠幫到你
selectcount(*)fromAwhereDATEPART(yy,time)=(DATEPART(yy,time)-1)