sql - 使用 Rails 或 SQL 获取每个类别的最新记录

标签 sql ruby-on-rails postgresql

我是 SQL 新手,我正在尝试获取 id对于每个类别,最新的 offer_valid_till 。下面是我的数据库结构。

<表类=“s-表”> <标题> id category_id offer_valid_till <正文> 1 1 空 2 2 2023 年 9 月 23 日星期六 06:47:07 UTC +00:00 3 1 2022 年 6 月 12 日星期日 09:55:53 UTC +00:00 4 3 2022 年 4 月 12 日星期二 08:55:51 UTC +00:00 5 4 空 6 3 2021 年 11 月 16 日星期三 03:18:10 UTC +00:00

预期响应:

<表类=“s-表”> <标题> category_id id <正文> 1 3 2 2 3 4 4 5

这是我尝试过的:

SELECT MAX(offer_valid_till), id
FROM OFFERS
GROUP BY category_id, id
HAVING MAX(offer_valid_till) = offer_valid_till

任何RailsSQL解决方案都会有很大帮助。谢谢!

最佳答案

使用此代码:

select category_id,id from (
    SELECT *
           ,ROW_NUMBER() over (partition by category_id order by offer_valid_till desc  ) as rn
    FROM OFFERS)a 
where rn=1

此查询集按顺序对 Offer_valid_till 字段进行编号。然后它从每个类别中提取第一个值。

关于sql - 使用 Rails 或 SQL 获取每个类别的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70676994/

相关文章:

PHP 变量和 MySQL LIKE 查询不起作用

sql - 旋转单行列 T-SQL

javascript - Rails 4 中加载特定 div 时调用 JS

mysql - 将枚举存储为整数与字符串之间有区别吗?

java - Postgres 在尝试截断表时提示缺少列

sql - 忽略字段具有 NULL 值的记录

sql - varchar()中的十六进制字符实际上是ascii。需要解码

ruby-on-rails - 不能让 accepts_nested_attributes_for 工作两层深?

javascript - 使用 Sequelize 获取 "TypeError: Cannot read property ' findAll' of undefined"

python - 我可以使用 SQLAlchemy 使用聚合表达式吗?