我在SQlite中有一些数据,其列为:ID |评分|日期
我只想返回某个日期之前的最新评分大于7的ID
我已经尝试了一个小时,但无法弄清楚。谁能帮忙吗?可能吗
编辑:这里是表格,ID并不是唯一的,因为一个ID在不同日期具有评级。
CREATE TABLE subset_all(
"ID" TEXT,
"RatingDate" TEXT,
"Rating" TEXT,
"SegType" TEXT,
);
答案 0 :(得分:1)
没有窗口功能,请先按ID分组以获取最新的分级日期(在特定日期之前),然后加入表格:
select s.*
from subset_all s inner join (
select id, max(date) maxdate
from subset_all
where date < ?
group by id
) g on g.id = s.id and g.maxdate = s.date
where s.rating > 7
用所需的日期限制替换?
。
答案 1 :(得分:0)
您可以使用相关子查询获得最新评级。然后过滤:
select t.*
from subset_all t
where t.date = (select max(t2.date)
from subset_all t2
where t2.id = t.id and
t2.date <= ? -- your cutoff date
) and
t.rating > 7
答案 2 :(得分:0)
在现代版本的sqlite(3.25或更高版本)中使用窗口函数的方法:
SELECT id
FROM (SELECT id, rating, date
, row_number() OVER (PARTITION BY id ORDER BY date DESC) AS rn
FROM ratings
WHERE date < :yourdate)
WHERE rating > 7 AND rn = 1