问题标签 [distinct-on]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
51 浏览

sql - 如何使用 DISTINCT ON 但 ORDER BY 另一个表达式?

模型Subscription has_many SubscriptionCart

ASubscriptionCart有一个status和一个authorized_at日期。

我需要authorized_at从与 a 关联的所有购物车中选择日期最早的购物车Subscription,然后我必须按此列对所有返回的Subscription结果进行排序。subscription_carts.authorized_at

下面的查询正在运行,但我不知道如何选择DISTINCT ON subscription.id以避免重复,但是ORDER BY subscription_carts.authorized_at.

到目前为止的原始 sql 查询:

如果我先尝试ORDER BY subscription_carts.authorized_at,我会得到一个错误,因为DISTINCT ONandORDER BY表达式的顺序必须相同。

我发现的解决方案对于我需要的东西来说似乎太复杂了,而且我没有实施它们,因为我不完全理解它们。

GROUP BY subscription_id然后从该组中选择而不是使用会更好DISTINCT ON吗?任何帮助表示赞赏。

0 投票
1 回答
42 浏览

postgresql - Typeorm order by after distinct on 与 postgresql

我有一个下表:

ID product_id 价格 
1 1 100
2 1 150
3 2 120
4 2 190
5 3 100
6 3 80

我想为产品选择最便宜的价格并按价格排序

预期输出:

ID product_id 价格
6 3 80
1 1 100
3 2 120

到目前为止我尝试了什么:

此查询返回最便宜的产品,但不对它们进行排序。所以,addOrderBy对产品没有影响。有没有办法对产品进行分类distinctOn

0 投票
2 回答
27 浏览

sql - 如何为不同的集合和子集提取最大时间戳

编辑:DBMS = Hadoop,使用 Teradata SQL 助手

这是原始表。有 20 个位置值 (c1)。每个位置都有一组过道 (c2)。我想从此表中获取所有记录集,以获取不同位置及其基于 max(tstamp) 的不同过道集。

地点 走道 邮票 数量 时间
12 420 2021 年 4 月 16 日下午 12:22:01 999 999
23 220 2021 年 4 月 16 日晚上 11:22:01 8888 222
31 310 2021 年 4 月 16 日晚上 10:22:01 666 333
12 420 2021 年 4 月 16 日上午 12:22:01 666 444
31 120 2021 年 4 月 16 日下午 3:22:01 666 555
22 210 2021 年 4 月 16 日下午 1:22:01 666 666

我用这个 SELECT*FROM store_control WHERE store_control.tstamp IN (SELECT MAX(tstamp) FROM store_control AS sql2)

结果:

地点 走道 邮票 数量 时间
23 220 2021 年 4 月 16 日晚上 11:22:01 8888 222

我想要的是这样的:

地点 走道 邮票 数量 时间
12 420 2021 年 4 月 16 日下午 12:22:01 999 999
22 210 2021 年 4 月 16 日下午 1:22:01 666 666
23 220 2021 年 4 月 16 日晚上 11:22:01 8888 222
31 310 2021 年 4 月 16 日晚上 10:22:01 666 333
31 120 2021 年 4 月 16 日下午 3:22:01 666 555