我在SQlite中有一些列的数据: ID \、评级、分级、日期
我只想返回其在某一日期之前的最新评级大于7的is。
我已经试了一个小时了,但还是想不出来。有人能帮忙吗?有可能吗?
编辑:这是表,ID并不是唯一的,因为一个ID在不同的日期有分级。
CREATE TABLE subset_all(
"ID" TEXT,
"RatingDate" TEXT,
"Rating" TEXT,
"SegType" TEXT,
);发布于 2019-07-16 22:09:00
在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发布于 2019-07-17 14:01:51
如果没有窗口函数,首先按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用所需的日期限制替换?。
发布于 2019-07-16 21:15:41
您可以使用关联子查询获得最近的评等。然后过滤:
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 > 7https://stackoverflow.com/questions/57065433
复制相似问题