问题标签 [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 回答
248 浏览

mysql - MySQL - 查找来自多个供应商的商品的最新、最优惠价格

我目前无法为我的问题找到解决方案,你们是我最后的希望。两天以来,我一直在尝试解决这个难题:

表项:

表供应商价格:

有几点需要注意:

  1. 不是每个供应商都有每件商品
  2. 一些供应商可能会比其他供应商更频繁地更新其价格,从而导致它们之间的时间戳差距更大

例如,我想知道目前哪个供应商以最优惠的价格出售香蕉?

我想我首先需要从每个供应商那里获得每件商品的最新价格,然后按价格对它们进行排序,对吗?但是如何以兼容 MySQL 的方式做到这一点呢?

我认为第一部分的正确方法是:

SELECT MAX(timestamp), vendor, item, MIN(price) FROM vendor_prices WHERE item="banana" GROUP BY vendor;

但是如何将其与所有其他标准联系起来呢?

编辑:我不得不稍微更改第一个表,因为我忘记了问题中的一个重要部分,抱歉:(

预期输出:第一个表(custA 或 custB)中特定客户的所有项目的所有供应商的最新、最优价格

0 投票
1 回答
108 浏览

mysql - 限制 MySQL 表之间 JOIN 中的行数

我有的

我在 MySQL 数据库(版本 5.6.35)中有以下两个表。

我的目标是什么

  • 约翰有Users.NumberOfRun=2,所以我将从Runs表中提取 2 个顶级记录
  • 凯特有,所以我会从表中Users.NumberOfRun=1提取第一条记录Runs
  • 彼得有Users.NumberOfRun=3,所以我将从Runs表中提取 3 条最高记录

我想得出以下结果

我试过的

首先,如果是 SQL Server,我会对 Runs 表使用函数ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ) AS [rn],然后JOIN在.UsersUsers.NumberOfRun<=[rn]

我已阅读文档,但似乎PARTITONING在 MySQL 中它从 8.X 版本开始可用,但我使用的是 5.6.X 版本。

最后,我根据这个 Stackoverflow 答案尝试了这个查询:

但它没有给我行号,这基本上是为了让我按照上述方式进行 JOIN。

SQL Fiddle 这个例子

0 投票
2 回答
97 浏览

php - 从 MySQL 查询中从百万行中选择第 N 条记录

我有一个如下的 MySQL 查询;我想在一个有 180 万条记录的表中为每个 600 条记录范围选择顶部记录。到目前为止,我必须循环 3,000 次才能完成此操作,这不是一个有效的解决方案。

数据库模式;

PHP 中的示例 MySQL 查询

换句话说,我想选择一个代表整个表的数据样本,该样本不是随机的,而是使用 600 范围内的顶部记录预定义的。到目前为止,我不知道如何继续。没有关于此主题的明确在线材料。

0 投票
1 回答
341 浏览

mysql - 玛丽亚数据库/MySQL。在分组中查找具有最大值和最小值的行字段

我有这个查询。返回每日最低和最高温度:

我在这个查询中缺少两个字段,LowTime 和 MaxTime。我不知道如何获得最小(低)和最大(高)发生的时间。(DateTimeS 是一个 DateTime 字段,其余为十进制)该表有分分钟的温度数据,如下所示:

有任何想法吗?

0 投票
1 回答
46 浏览

mysql - 过滤掉连接查询中的最新行

我有 2 个包含以下信息的表。不幸的是,我对 JOINS 和 MySQL 的基本知识并没有帮助我实现我需要的结果集……尤其是第 3 点让我望而却步。任何帮助是极大的赞赏。

订单

报告

我需要选择所有基于:

  1. 选择国家/地区 = 美国的订单
  2. 选择属于这些美国订单的报告(即订单 ID = 来自上述结果的订单 ID)
  3. 最重要的是:过滤报告的结果,使其仅显示每个建筑物的单个最新报告(基于最近的 RepDate)

所以结果将是:

以下结果将被排除,因为“PE Grid”有更新的报告:

0 投票
1 回答
51 浏览

mysql - 希望创建一个仅显示一列 MYSQL 的子查询

该数据库用于图书借阅系统。如果学生拿了一本书的副本,系统会接受那里的学生编号并给他们一个书的归还日期。这是我正在使用的两个表

贷款表:

学生表:

首先,我希望计算一本书的最新截止日期(它会显示这本书的代码以及该书的最新截止日期是什么时候),我已经使用这个完美运行的代码完成了

现在我想修改这个查询,让它获取每本书的最新到期日期,但只显示no拥有该书的学号 ( )。为此,我需要使用一个我对它知之甚少的子查询,因为我才刚刚开始使用 MySQL。基本上我不确定如何创建这个子查询,我想知道是否有人可以帮助我并解释它,而不仅仅是向我展示代码。

0 投票
2 回答
43 浏览

mysql - 比较两个表格中的分数,并显示最近不同的分数

我在 MariaDB 中有两个表,我需要在左表中显示它们的当前分数与历史表中的最新分数不同的表。

例如:

在上面我想显示鲍勃,因为他的最新历史与他目前的得分不同,但不显示汤姆,因为他是一场比赛

我尝试使用类似的东西:

这引发了一个错误:

如果我删除限制 1,那么它会返回用户中的几乎所有行 - 每个表中有几千行,但我认为它应该返回 50 左右,但它在 4,285 个可能的行中返回超过 4,100 行

0 投票
1 回答
38 浏览

sql - SQL MIN(COUNT) 似乎无法正常工作?

首先,我从以下查询生成了一个表:

我正在尝试列出 COUNTS 的最小值。所以我在一个选择中做了一个选择,我最终得到:

使用查询:

结果是不对的。因为当您查看供应商zip-7733 时,shopzip 应该是 26505,MIN(num) 为 1。但这不是我得到的答案。

0 投票
1 回答
430 浏览

mysql - MySQL - GROUP BY,分组时只选择第一行

我在将特定列分组为一个时遇到问题。当我使用 GROUP BY 时,最后一行应该是第一行时总是被选中。

主要查询是:

不带 GROUP BY 的 SELECT

如果我GROUP BY使用任何重复的列值(在这种情况下,我使用了 med_id):

使用 GROUP BY 选择

我正在尝试获得此输出

预期产出

输出应该只是第一个查询的前两个。显然,我不能使用 LIMIT。

0 投票
0 回答
38 浏览

sql - ORDER 不从 2 个选项中选择较小的数字

我的目的:

选择条目,has_t "1"只要它在那里,如果它不在那里,选择条目has_t "2"。相关访问的所有剩余条目应进入“more_items”列

问题:

当前代码首先选择has_t "2", 而不是has_t "1"

注意:以前的代码版本似乎是使用不兼容的 SQL 子查询顺序完成的,这在 MariaDB 上无论如何都不起作用: