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)