首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在给定条件SQLite的日期之前的最新结果

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

Stack Overflow用户
提问于 2019-07-16 21:05:19
回答 3查看 102关注 0票数 0

我在SQlite中有一些列的数据: ID \、评级、分级、日期

我只想返回其在某一日期之前的最新评级大于7的is。

我已经试了一个小时了,但还是想不出来。有人能帮忙吗?有可能吗?

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

代码语言:javascript
复制
CREATE TABLE subset_all(
  "ID" TEXT,
  "RatingDate" TEXT,
  "Rating" TEXT,
  "SegType" TEXT,
);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-16 22:09:00

在sqlite的现代版本(3.25或更高版本)中使用窗口功能的方法:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-07-17 14:01:51

如果没有窗口函数,首先按id分组以获得最新的评等日期(在某个日期之前),然后加入到表中:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-07-16 21:15:41

您可以使用关联子查询获得最近的评等。然后过滤:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57065433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档