[英]How to find a difference between consecutive rows of a same group?
这个问题在 Facebook 采访中被问到:
(1) 有两张桌子
使用这些数据,您能否回答以下问题:
到目前为止,我已经得到了这个,但我被卡住了。 你能帮助我吗? 谢谢。
(SELECT grade_level, date, COUNT(attendance) AS att FROM attendances AS A
LEFT JOIN students AS S
ON A.student_id = S.student_id
GROUP BY grade_level, date
HAVING attendance == "yes"
AND (date == "02-06-2020" OR date == "02-05-2020")
ORDER BY grade_level, date DESC) AS t
您可以加入表,进行条件聚合,然后排序和限制:
select
s.grade_level
sum(a.attendance * case when a.date = date('now') then 1 else -1 end) attendance_drop
from attendances a
inner join students s on s.student_id = a.student_id
where a.date in (date('now'), date('now', '-1 day'))
group by s.grade_level
order by attendance_drop desc
limit 1
请尝试使用下面的脚本认为它工作正常。
SELECT TOP 1 s.grade_level, COUNT(a.attendance) AS dropCount
FROM students AS s
INNER JOIN attendances AS a ON a.student_id = s.student_id
WHERE
a.attendance = 'no'
AND (a.date <= DATEADD(DAY,-1, CAST(GETDATE() AS DATE)) AND a.date >= CAST(GETDATE() AS DATE))
GROUP BY s.grade_level
ORDER BY dropCount DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.