给定条件SQLite的日期之前的最新结果

时间:2019-07-16 21:05:19

标签: sql sqlite

我在SQlite中有一些数据,其列为:ID |评分|日期

我只想返回某个日期之前的最新评分大于7的ID

我已经尝试了一个小时,但无法弄清楚。谁能帮忙吗?可能吗

编辑:这里是表格,ID并不是唯一的,因为一个ID在不同日期具有评级。

CREATE TABLE subset_all(
  "ID" TEXT,
  "RatingDate" TEXT,
  "Rating" TEXT,
  "SegType" TEXT,
);

3 个答案:

答案 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