问题标签 [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.
sql - 为什么我的 DISTINCT ON 表达式不起作用?
询问:
我有一个包含重复项的边缘表,我想删除重复的边缘保留其中一个,但是语法本身是错误的吗?
postgresql - 在 Postgres 中使用 DISTINCT ON 返回哪一行
当我DISTINCT ON
在 PostgreSQL 中使用(在 django 中不同)时,在具有相同字段的行组中检索了哪些行?
sql - 在不使用子查询的情况下使用 SELECT DISTINCT ON 计算总行数
我使用 PostgreSQLSELECT DISTINCT ON
语法执行了一些查询。我想让查询在每个结果行旁边返回总行数。
假设我有一个my_table
如下表:
然后我有几个值:
基本上my_table
包含一些版本化的数据。这id_reference
是对数据库全局版本的引用。对数据库的每次更改都会增加全局版本号,并且更改将始终向表中添加新行(而不是更新/删除值),并且它们将插入新的版本号。
我的目标是执行一个只检索表中最新值以及总行数的查询。
例如,在上述情况下,我想检索以下输出:
我的尝试如下:
这将返回几乎正确的输出,除了total
是行数my_table
而不是结果查询的行数:
如您所见,它具有5
而不是预期的3
.
我可以通过使用子查询和count
聚合函数来解决这个问题:
这产生了我的预期输出。
我的问题:有没有办法避免使用这个子查询并有类似的东西来count(*) over ()
返回我想要的结果?
postgresql - Postgres : Need distinct records count
I have a table with duplicate entries and the objective is to get the distinct entries based on the latest time stamp.
In my case 'serial_no' will have duplicate entries but I select unique entries based on the latest time stamp.
Below query is giving me the unique results with the latest time stamp. But my concern is I need to get the total of unique entries.
For example assume my table has 40 entries overall. With the below query I am able to get 20 unique rows based on the serial number. But the 'total' is returned as 40 instead of 20. Any help on this pls?
sql - Postgresql 中的 SELECT DISTINCT ON 返回多行
当我跑
我希望单行对应于ts
满足条件的最大的行,并通过采用最低的来打破平局version
。
查询返回
我不明白为什么要返回两个不明显ts
的。是否有类似的查询会返回所需的结果?
sql - PostgreSQL 性能:查询达到 52 周高点的股票(加入最大值行)
我有一个非常简单的数据库结构,其中包含“日终”股票价格,类似于:
(instrument_id 是股票的唯一 ID)
我现在想选择所有instrument_id
在本周达到 52 周高点的股票。(即close
最近 7 天的列高于前 52 周的所有股票)
我尝试了许多不同的方法:group by 和 max()、select distinct on、窗口函数(row_number),但我没有设法让它低于 150 秒。我目前最好的(也是最简单的)方法是:
我很清楚有许多类似的问题,但这些方法让我找到了一个可行的解决方案,但没有一个能帮助我提高性能。该表包含来自不同 28000 支股票的 1000 万行。这只会变得更大。有没有办法在不进行非规范化的情况下通过不到 2 秒的查询来实现这个要求?显然,任何类型的索引等都可以。
上述方法的查询计划:
我当前的(基本上是随机的)索引:
sql - 在一列上选择 Distinct,不按该列排序
我试图只选择我正在查询的表的 ID,并且仍然能够指定其他列的排序。
首先,我尝试简单地做:
那是行不通的,因为 for SELECT DISTINCT
,ORDER BY
表达式必须出现在选择列表中,并返回错误。
如果我添加province_infos.population
and country_infos.population
,它可以工作,但是我会得到重复的 ID,这是我不能拥有的。
为了解决这个问题,我尝试使用DISTINCT ON()
:
那给了我错误SELECT DISTINCT ON expressions must match initial ORDER BY expressions
。我也不能不SELECT DISTINCT ON
订购专栏。
似乎唯一可行的方法是执行以下操作:
不幸的是,我不能这样做,因为我不能按 ID 排序,因为它会扭曲其他订单的结果。似乎唯一不按 ID 排序的方法是,如果我DISTINCT
从选择中删除,但我会得到重复项。
任何人都知道我该如何解决这个问题?
编辑:我省略
的...
不应该是相关的,但如果你想看到:
而且我不只是想让它适用于这个特定的查询。这只是我用来解释困境的一个例子。我正在从任意数据结构中自动生成这些类型的查询。
postgresql - 在 PL/pgSQL 中按不同类别进行高性能 KNN 搜索
对于我的硕士论文,我正在分析几种可能对移动服务提供商有用的算法(测试数据集基于移动音乐学校),以便在考虑教师现有学生的位置的情况下为新学生找到最佳教师。
所附代码为避免重复的简单 KNN(k-最近邻)搜索提供了正确结果。
由于“DISTINCT ON”要求 st.teacher_id 包含在 ORDER BY 子句中,因此不使用我在几何列“address_transform”上的 R-Tree-Index。一旦表大小变大(学生表为 100k 行),几何变得更复杂等,这会导致性能非常差。
任何想法如何重写函数以便使用索引?
注释:
我正在使用动态查询,因为我正在使用多个真实/合成数据表(索引、非索引、集群等)进行测试
我知道可以设置像 enable_seqscan 这样的配置参数,但这并不是我问题的永久解决方案
作为替代方案,我已经实现了一个(非常快的)变体,我通过简单的 KNN 预先选择多个所需的邻居,然后在第二步中删除重复项。这适用于纯粹与距离相关的方法,但如果在后面的步骤中也考虑了除距离之外的其他参数,则预选不一定包含最佳匹配。
我正在使用 postgres 10.4,postgis 2.4.4
postgresql - 使用 distinct on 加入多个表
我想显示相应的 emp_id、emp_no、emp_ref_no、class_no(emp_detail 表中基于 created at 的最新一个)以及 class_detail 表的所有列。Class_detail 表应显示该类的最新对应记录 no
我希望看到的预期输出如下所示:-