[英]Loop or recursive sql query
我有一張帶有數字和日期的表格(每個日期和日期不一定一定要間隔1個數字)。 當表格中沒有數字時,我想獲取日期計數。
我所擁有的(僅舉一個例子,日期和“ chiffres”更為復雜):
date | chiffre
2014-09-30 | 2
2014-09-29 | 1
2014-09-28 | 2
2014-09-27 | 2
2014-09-26 | 1
2014-09-25 | 2
2014-09-24 | 2
等等...
我需要數字“ 1”:
actual_number_of_real_dates_between_two_given_dates
1
3
我的實際查詢感謝Gordon Linoff
select count(n.id) as difference
from nums n inner join
(select min(date) as d1, max(date) as d2
from (select date from nums where chiffre=1 order by date desc limit 2) d
) dd
where n.date between dd.d1 and dd.d2
如何測試第2行和第3行? 3和4等...不僅持續2個? 沒有“限制2”,我應該使用循環嗎? 或者我可以不用它嗎?
如果要查找表中1
s之間的間隔,則應從下一個“ 1”開始:
select n.*,
(select date
from nums n2
where n2.chiffre = 1 and n2.date > n.date
order by date
limit 1
) next_date
from nums n
where chiffre = 1;
然后將其用作子查詢以獲取所需的內容:
select n.*,
datediff(coalesce(next_date, now()), date) as days_between
from (select n.*,
(select date
from nums n2
where n2.chiffre = 1 and n2.date > n.date
order by date
limit 1
) next_date
from nums n
where chiffre = 1
) n;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.