1. sql 语句:一个字段,连续几天值大于0,获得天数 怎么解决的请教
select * from tb where a = xxx筛选后,难点就是如何判断是否有3天是连续的
可以将表下移一行后作差比较:
b 错行 差
1 2011-6-1
2 2011-6-3 2011-6-1 2
3 2011-6-4 2011-6-3 1
4 2011-6-5 2011-6-4 1
2011-6-5
然后再用游标判断差这一列是否有两个1是挨着的
或者直接判断时期是否连续,sqlserver里可以这样写
DECLARE @id INT
DECLARE @time DATETIME
DECLARE @tb TABLE (id INT IDENTITY(1,1) ,b DATETIME)
INSERT INTO @tb(b) SELECT b FROM tb ORDER BY b
SELECT @id=MIN(INT_I) FROM @tb
WHILE NOT @id IS NULL BEGIN
SELECT @time = b FROM @tb WHERE INT_I=@id
IF EXISTS(SELECT 1 FROM tb WHERE b = DATEADD(dd,1,@time))
BEGIN
IF EXISTS(SELECT 1 FROM tb WHERE b = DATEADD(dd,2,@time))
BEGIN
PRINT '存在!'
END
END
SELECT @id=MIN(id) FROM @tb WHERE id>@id
END
2. 连续签到的天数,并排序,求这个sql语句该怎么写
这里有一个采用遍历的方式获取指定用户连续签到的方法分享,
账号连续签到天数的获取
实现思路:采用遍历循环的方式,依次从大到小的比对用户是否签到
如有疑问,及时沟通!
3. 某一个字段表示一天,怎么用SQL取连续三天
select begin_dt
from (select begin_dt, count(*) over(partition by ch) cnt
from (select begin_dt,
to_date(begin_dt, 'yyyy-mm-dd') - row_number() over(order by begin_dt) ch
from liur_account)
)
where cnt >= 3;
4. 报表统计连续三天或以上的记录怎么写SQL语句
用你的where条件去控制啊,
思想如下:
select * from table where 星期一迟到了 and 星期二迟到了 and 星期三迟到了
5. sql求解:查询连续七天以上都有打卡的员工记录
可以利用一下ORACLE的ROWNUM机制来做点文章,因为它是自增的
我假设有这一张表 WORK
ID,上班日期(DA)
1,20080101
1,20080102
1,20080103
2,20080101
2,20080103
3,20080101
也可能是乱序的
第一步:排序
SELECT * FROM WORK ORDER BY ID, DA
第二步:日期-ROWNUM如果相同的话认为他们是连续的,然后GORUP BY一下
SELECT A.*, TO_NUMBER (A.DA - ROWNUM) DAYS
FROM (SELECT * FROM WORK ORDER BY ID, DA) A
第三步:分别求出连续区间,让他们相减求出大于6的值
SELECT C.ID
(SELECT B.ID, (MAX (B.DA) - MIN (B.DA)) DAYS
FROM (SELECT A.*, TO_NUMBER (A.DA - ROWNUM) DAYS
FROM (SELECT * FROM WORK ORDER BY ID, DA) A) B
GROUP BY B.ID, B.DAYS) C
WHERE C.DAYS > 7
ITPUB一位高人的办法得到了启发
6. 如何用SQL解决连续几天的问题
统计下用户最长连续登录的天数”,“统计下连续登录超过10天的用户”,“统计下连续3天交易额超过100W的店铺
1. 连续两天购买的用户
先按照date将一天多次进行去重
row1:按照Date分组,time排序
row2:按照Date和ID分组,time排序
按照ID、row2-row1 分组,重复次数大于1
2. 比如连续2次购买的用户()
row1:按照 time排序
row2:按照 ID 分组,time排序
按照ID、row2-row1 分组,重复次数大于1
2. 连续2次购买苹果的用户
row1:按照 time排序
row2:按照ID、商品类型分组,time排序
按照ID、商品类型分组,重复次数大于1
3. 连续2次在淘宝购买苹果的用户
row1:按照 time排序
row2:按照ID、商品类型、店铺分组,time排序
按照ID、商品类型、店铺分组,重复次数大于1