问题标签 [groupwise-maximum]

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 投票
1 回答
43 浏览

mysql - Mysql OneToMany 只加入最近的记录

我有两张桌子customers和他们的contacts. 一个客户可以有许多联系方式。在这种情况下,我只需要为客户获取最后添加的联系方式。我可以通过subquery. 但是当数据很大时,我在查询所有客户数据时面临性能不足的问题。

客户表 (customers_customers)

联系人表 (customers_customercontacts)

我已经尝试了以下查询,我得到了结果,但是查询很慢。

我需要获取客户的公司名称和每个公司名称的最后添加的电话号码。是否有任何优化的方式或不使用子查询的方式来实现这一目标?

解决了

非相关子查询总是比相关子查询提供更好的性能。

0 投票
1 回答
111 浏览

mysql - MySQL:按查询优化分组

我有一个以下模式的表:

在这里,对于id = 1,可能有多个金额条目。我想提取最后添加的条目及其对应的数量,按 id 分组。

我在 self 表上编写了一个带有内部连接的工作查询,如下所示:

我认为内部联接是一种矫枉过正的做法,可以用更优化/更高效的查询来代替。我用 , 编写了以下查询,where但它不起作用。任何人都可以帮忙吗?group byhaving

0 投票
0 回答
34 浏览

mysql - 获取过去 28 天内每天的最大值

我看过一些过去的帖子,其中有关于每天提取最大值的问题。基于此,我尝试了,SELECT ts, MAX(current) FROM mytable WHERE ts > date_add(now(), interval -28 day);但我只得到了一排,这不是我想要的。

在此表中,ts是我的时间戳,current是另一列值。我想获取current过去 28 天内每天的最大值。但是,我的current值每天每 30 分钟记录一次。ts因此,每天都有许多值。这可能是上述查询设计不起作用的原因吗?如果是这样,我该如何修改它?

以下是我的表格在几行中的样子:

0 投票
1 回答
39 浏览

mysql - SqlLite 和 MariaDb SELECT 之间的结果不同

我在 Debian 服务器上有 2 张桌子、游乐设施和台阶。

从 Xamarin 应用程序中,我从该服务器(RefitNewtonsoft JsonSQLite-net PCL包)获取数据以填充本地表。

当我在 mariadb 上使用此查询时:

我得到了正确的结果(每次骑行的第一步,然后从 1 开始)

但是当使用 Sqlite 的等价物时:

结果,我得到了每次(相同)骑行 的最后一步!

无论是在 mariadb 还是 sqlite 上,每个表都有一个主键(id字段)。
我检查了一下,数据的发送、接收和保存顺序相同。

只需在移动应用程序中添加:

我尝试添加ORDER BY Rides.Id,但这并没有改变任何东西。

0 投票
3 回答
777 浏览

sql - 选择最大值小于值列表的条目

假设我的表结构如下:

我有一个这样的 id 列表:

(...,900, 1000, 2000, 3000, 4000,....)

我想在上面的列表中找到小于每个 id 的最大 id。我的表 id 不一定是连续的,两个连续的 id 之间存在一些差距,例如:

(...,889,900,950,952,997,1000,1001,1010,1920,2000,2990,3000,3500,4000,...)

根据上述列表的预期结果将是:

(889, 997, 1920, 2990, 3500,...)

我如何达到预期的效果?

0 投票
0 回答
1038 浏览

mysql - 使用 GROUP BY 的 SQL 查询非常慢

我有一个包含 61,000 行的数据库。由于服务器响应时间慢,我的网站的 Google PageSpeed 得分非常低,因此在调查时我发现此 SQL 查询需要 1200 毫秒以上才能返回结果:

如果我删除“GROUP BY”部分,查询将在不到 150 毫秒内执行

我已经添加了索引和优化表。我还能做些什么来优化这个查询?表索引: http: //prntscr.com/iv2nel

0 投票
1 回答
63 浏览

mysql - 我正在使用 MYSQL 计算学生表中每个科目的 TOP-N。

我有一个学生表,其中有 student_id、分数和主题

插入的数据是

使用查询后,我得到了所需的输出,

我根本不明白这是如何工作的,为什么需要加入?这是子查询吗?from 子句中的语句会在每一行数据上运行吗?有人请给我解释一下。我正在学习 SQL。

注意:我在网上找到了与此类似的查询,我只是根据我的要求对其进行了调整,这不是我的工作。

0 投票
4 回答
54 浏览

sql - 如何从两个表中获取特定字段最大值的行

我有两个有date_updated列的表。

TableA就像下面

TableB也有同样的结构

结果表应包含最近日期的数据

这里的date_updated列是datetimesql server 的数据类型。我通过使用group by和选择最大值来尝试这个date_updated。但我无法在select语句中包含列类型。当我使用输入时group by,结果不正确,因为类型也被分组。我该如何查询这个。请帮忙

0 投票
2 回答
108 浏览

mysql - SQL选择两列组合的最高行

我需要查询 MySQL 5.5 的帮助

在按 location_id、count_number、try_number 对行进行排序后,我试图只为 2 列(tan、location_id)的组合选择 1 行。所以基本上我想要一个只返回下图中黄色行的查询。每个 tan/location_id 组合只有 1 条记录,该组中“count_number”和“try_number”最高。

在此处输入图像描述

这是我目前的查询。

0 投票
2 回答
315 浏览

mysql - MySQL 分组最大值

编辑更新:原来我有 5.7 版,所以 Window Functions 不是找到解决方案的选项。

问题描述:我有一个offer、skills和profiles之间的三元关系表。这种三元关系有一个属性,排名。

我有一个技能表,我可以在其中看到技能的名称。到目前为止,我必须做两个查询:

1) 给我每个个人资料排名前 10 位的技能:

2) 对于 ID 技能列表,请告诉我它们是否出现在任何个人资料中,以及它们出现的次数。

在最后一个查询中,已经确定了一个问题:它“搜索”在个人资料的任何点出现的技能。由于个人资料可能拥有数千种技能,因此可能会产生误导,因为我们想要实现的目标,我现在只需要在它是任何个人资料的前 10 项技能之一时“搜索”。但只进前十。

到目前为止,基本上我一直在尝试混合这两个查询,但收效甚微,因为似乎我无法对两列进行分区,即使我只使用一个,我也会得到You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(PARTITION BY

我了解到这个操作可能被称为分组最大值,我已经看到了几个寻找这个的答案。我无法复制它们中的任何一个,mysql Ver 14.14 Distrib 5.5.60, for Linux (x86_64) using readline 5.如果它有任何帮助,我特别需要它(我已经尝试过对其他一些类似数据库来说非常完美但在 mysql 中不起作用的答案)。

表定义:

做的结果

查询 1) 的结果如上所述,它为我提供了 ONE 配置文件的前 10 名