问题标签 [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 投票
4 回答
7661 浏览

sql - postgres 中的 distinct() 函数(不是选择限定符)

我刚刚遇到一个 SQL 查询,特别是针对 Postgres 数据库,它使用一个名为“distinct”的函数。即:

请注意,这不是 SELECT 上的普通 DISTINCT 限定符——至少它不是 DISTINCT 限定符的正常语法,请注意括号。它显然是使用 DISTINCT 作为一个函数,或者这可能是一些特殊的语法。

知道这意味着什么吗?

我试着玩了一下,如果我写

我得到相同的结果

当我将它与同一个选择中的其他字段结合起来时,我不清楚它到底在做什么。

我在 Postgres 文档中找不到任何内容。

谢谢你的帮助!

0 投票
3 回答
703 浏览

sql - PLPGSQL distinct on,order by,不返回任何内容

我做了这个 plpgsql 函数,它没有返回任何东西!而如果我取出查询部分并在单独的 sql 窗口中执行它,它会返回正确的行。

我还认为该查询并不是真正的最佳选择,因此不胜感激(对 plpgsql 来说非常新)

非常感谢!

0 投票
1 回答
1156 浏览

sql - PostgreSQL 不同,分组依据,合二为一?

我在使用 PostgreSQL 查询时遇到了一些问题

我想要的是一个“活动”列表,按距离排序,并且在距位置 [in_lat, in_lng, in_radius] 的最小距离内现在,我正在检索距离(使用 distance_in_km(...) )两次。一次用于订购,一次用于检查活动是否在我的首选范围内。

此外,一个活动可能有多个“Campaignreceiver”条目(receivetype [EMAIL、WEBSITE 等...])

而且我只想检索一次广告系列。因此 DISTINCT ON。

所以问题是,我怎样才能得到像“WHERE distance < in_radius”这样的工作。我的猜测是添加一个 GROUP BY 和 HAVING 但我做了一些测试并没有得到工作。

很感谢任何形式的帮助!!!

0 投票
7 回答
256140 浏览

sql - 具有不同 ORDER BY 的 PostgreSQL DISTINCT ON

我想运行这个查询:

但我得到这个错误:

PG::Error: ERROR: SELECT DISTINCT ON 表达式必须匹配初始 ORDER BY 表达式

添加address_id为第一个ORDER BY表达式可以消除错误,但我真的不想添加排序address_id。是否可以不订购address_id

0 投票
3 回答
15897 浏览

postgresql - 选择按某列排序并在另一列上不同的行

相关 - PostgreSQL DISTINCT ON 与不同的 ORDER BY

我有餐桌购买(product_id、purchased_at、address_id)

样本数据:

我期望的结果是每个 address_id 的最近购买的产品(整行),并且该结果必须按 purchase_at 字段的后代顺序排序:

使用查询:

我越来越:

所以行是相同的,但顺序是错误的。有什么办法解决吗?

0 投票
1 回答
7238 浏览

sql - 如何在 PostgreSQL 查询中对不同的元组进行排序

我试图在 Postgres 中提交一个只返回不同元组的查询。在我的示例查询中,我不希望一个cluster_id/feed_id 组合存在多次的重复条目。如果我做一个简单的:

我明白了,但我也想根据num_docs. 因此,当我执行以下操作时:

我收到以下错误:

我想我明白为什么我会收到错误(除非我以某种方式明确描述该组,否则不能按元组分组)但是我该怎么做呢?或者,如果我对错误的解释不正确,有没有办法实现我的初始目标?

0 投票
5 回答
22625 浏览

postgresql - PostgreSQL 不允许我按顺序对列进行分组

在 PostgreSQL 中,我想一次获取每个用户并按日期排序。

这是我的查询:

这是一个示例数据

现在,我要做的是通过 useridx 对它们进行分组并按日期排序来获取此表。

预期结果

实际结果

我也不想分组日期。我只想用 useridx 分组并按日期 DESC 对它们进行排序。

任何帮助/想法表示赞赏!

注意:我也尝试过 Distinct。不符合我的需要或我做错了。

很困惑,被困DISTINCT ONrank()方法之间。

结论:对于在这里遇到相同问题的人,可以将其作为答案阅读。@kgrittn 和 @mu 都太短了,答案都是正确的。我将继续在我的项目中使用答案和模式,并且及时我可以理解哪个是最好的-我猜-。因此,选择其中之一并继续您的工作。你会没事的。

上次更新:有时,Distinct On 会从结果中排除一些 id。假设我有一个 id 列,我有 6 行是相同的。因此,从结果中排除它是不同的,但 rank() 只是结果。所以,使用 rank()!

0 投票
4 回答
92 浏览

sql - 如何从postgresql中的sql结果中获得最大的结果

我正在使用 postgresql 8.3,我有一个简单的 sql 查询:

所以,我得到了这样的结果集:

现在,我想通过instance_id获取最大id,结果就像自爆

我怎么能得到结果?我使用以下 sql,但出现错误。

错误:关系“x”不存在

任何可以帮助我的人,非常感谢!

0 投票
3 回答
12315 浏览

ruby-on-rails-3 - 使用rails对postgres“DISTINCT ON”应用不同的顺序

我有一个 Rails 应用程序:

user has_many :projects

user has_many :tasks, :through => :projects

project has_many :tasks

每个任务都有一个里程碑日期。

要显示包含下一个里程碑日期的项目详细信息表,我正在使用:

这工作正常。

我现在希望能够对表格列进行排序。

根据 PostgresDISTINCT ON不可排序,您必须将其包装在另一个选择语句中,即SELECT * FROM (SELECT DISTINCT ON....) ORDER BY column_3

我确实认为被排序的列可以根据需要在 SQL 中工作,即(按项目名称 DESC 排序):

这可行,但我也希望能够按里程碑订购,但那样行不通。

有人能告诉我如何转换我的 rails 查询,以便它可以按任何列排序吗?

更新


我想我的问题只是如何将 activerecord 查询包装在环境中SELECTORDER BY

我想我已经设法使用:

这是最好的方法还是有人能想到更好的方法?- find/paginate_by_sql 似乎是一种解决方法,我更愿意留在 activerecord 查询的范围内。

谢谢

0 投票
0 回答
2142 浏览

performance - Postgresql:SELECT DISTINCT ON 的更快替代方案

我在将过滤后的数据从一个表复制到另一个表(具有类似结构)时遇到问题。基本上,我有一个包含大约 110 亿行的大表,我想将基于其中一列(称为“指纹”)唯一的记录复制到另一个表中。我试过这样的事情:

它通常有效,但速度很慢;我在一个包含 800 000 行的较小的表上对其进行了测试,花了将近一个小时。我尝试将 INSERT 更改为一对 COPY (带二进制选项)语句,但不知何故更糟......

我在 Linux LMDE 上运行 psql 服务器,i5-2410m 具有 6gigs 的 RAM。我不知道它是否需要这么长时间以及是否有办法改进它。我会很感激任何提示。