问题标签 [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.
mysql - Mysql OneToMany 只加入最近的记录
我有两张桌子customers
和他们的contacts
. 一个客户可以有许多联系方式。在这种情况下,我只需要为客户获取最后添加的联系方式。我可以通过subquery
. 但是当数据很大时,我在查询所有客户数据时面临性能不足的问题。
客户表 (customers_customers)
联系人表 (customers_customercontacts)
我已经尝试了以下查询,我得到了结果,但是查询很慢。
和
我需要获取客户的公司名称和每个公司名称的最后添加的电话号码。是否有任何优化的方式或不使用子查询的方式来实现这一目标?
解决了
非相关子查询总是比相关子查询提供更好的性能。
mysql - MySQL:按查询优化分组
我有一个以下模式的表:
在这里,对于id = 1
,可能有多个金额条目。我想提取最后添加的条目及其对应的数量,按 id 分组。
我在 self 表上编写了一个带有内部连接的工作查询,如下所示:
我认为内部联接是一种矫枉过正的做法,可以用更优化/更高效的查询来代替。我用 , 编写了以下查询,where
但它不起作用。任何人都可以帮忙吗?group by
having
mysql - 获取过去 28 天内每天的最大值
我看过一些过去的帖子,其中有关于每天提取最大值的问题。基于此,我尝试了,SELECT ts, MAX(current) FROM mytable WHERE ts > date_add(now(), interval -28 day);
但我只得到了一排,这不是我想要的。
在此表中,ts
是我的时间戳,current
是另一列值。我想获取current
过去 28 天内每天的最大值。但是,我的current
值每天每 30 分钟记录一次。ts
因此,每天都有许多值。这可能是上述查询设计不起作用的原因吗?如果是这样,我该如何修改它?
以下是我的表格在几行中的样子:
mysql - SqlLite 和 MariaDb SELECT 之间的结果不同
我在 Debian 服务器上有 2 张桌子、游乐设施和台阶。
从 Xamarin 应用程序中,我从该服务器(Refit、Newtonsoft Json和SQLite-net PCL包)获取数据以填充本地表。
当我在 mariadb 上使用此查询时:
我得到了正确的结果(每次骑行的第一步,然后从 1 开始)
但是当使用 Sqlite 的等价物时:
结果,我得到了每次(相同)骑行 的最后一步!
无论是在 mariadb 还是 sqlite 上,每个表都有一个主键(id
字段)。
我检查了一下,数据的发送、接收和保存顺序相同。
只需在移动应用程序中添加:
我尝试添加ORDER BY Rides.Id
,但这并没有改变任何东西。
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,...)
我如何达到预期的效果?
mysql - 使用 GROUP BY 的 SQL 查询非常慢
我有一个包含 61,000 行的数据库。由于服务器响应时间慢,我的网站的 Google PageSpeed 得分非常低,因此在调查时我发现此 SQL 查询需要 1200 毫秒以上才能返回结果:
如果我删除“GROUP BY”部分,查询将在不到 150 毫秒内执行
我已经添加了索引和优化表。我还能做些什么来优化这个查询?表索引: http: //prntscr.com/iv2nel
mysql - 我正在使用 MYSQL 计算学生表中每个科目的 TOP-N。
我有一个学生表,其中有 student_id、分数和主题
插入的数据是
使用查询后,我得到了所需的输出,
我根本不明白这是如何工作的,为什么需要加入?这是子查询吗?from 子句中的语句会在每一行数据上运行吗?有人请给我解释一下。我正在学习 SQL。
注意:我在网上找到了与此类似的查询,我只是根据我的要求对其进行了调整,这不是我的工作。
sql - 如何从两个表中获取特定字段最大值的行
我有两个有date_updated
列的表。
TableA
就像下面
我TableB
也有同样的结构
结果表应包含最近日期的数据
这里的date_updated
列是datetime
sql server 的数据类型。我通过使用group by
和选择最大值来尝试这个date_updated
。但我无法在select
语句中包含列类型。当我使用输入时group by
,结果不正确,因为类型也被分组。我该如何查询这个。请帮忙
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 名