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

mysql - 选择与最旧条目匹配的所有条目

在 MariaDB / MySQL 中,我有一个这样的表:

table (key1, key2, date)INDEX(key1, key2)

现在我想取最旧的条目:

key1最后与key2第一个查询匹配的所有条目:

可以以某种方式将其简化为一个查询吗?

0 投票
1 回答
149 浏览

arrays - 数组中的最大总和,使得可以在 5 个元素中选择最多 2 个连续的元素

我无法解决如何选择元素。

例如,如果我们有 1,2,3,4,5,6,7,8,9,10

我们选择 4,5

那么我们不能选择 6,7,8 但我们可以选择 9th

所以,我想一般来说

如果我们选择 2 个连续元素arr[i] 和 arr[i+1]

那么我们不能从接下来的 3 个值arr[i+2]、arr[i+3]、arr[i+4]中选择,我们只能从arr[i+5]中选择

例如:

考虑这个有9 个元素的数组

输入:arr[] = {100, 200, 100, 500, 900, 500, 300, 400, 100}

输出:1500

最大金额应为:1500

通过取第 4、5 和 9 位的值获得

即 500+900+100 = 1500

另一个例子:

考虑这个有10 个元素的数组

输入:arr[] = {500, 700, 300, 500, 900, 700, 600, 400, 700, 500}

输出:2800

选择 (2, 5, 9, 10) 处的元素

即 700+900+700+500 = 2800

0 投票
1 回答
264 浏览

mysql - MySQL - Convert rows into columns based on latest date and list of ids for each column

I still can't figure this out even after hours of searching and trying. Maybe I did not choose the right words?

Okay, so I have table with events like this:

I would like to pivot this table into three different columns where each column contains latest events (id_section and date) within list of id_section. Well, basically like this:

sectionA = id_section IN (1,2,3,4,5) and MAX(date)

sectionB = id_section IN (6,7,8,9,10) and MAX(date)

sectionC = id_section IN (11,12,13,14,15) and MAX(date)

Here is SqlFiddle of what I have right now - it only selects latest event per id_article:

I tried to use more JOINS but I still can't figure it out.

Thanks for any help!

0 投票
1 回答
27 浏览

mysql - mysql - 对有序子查询中的第一个结果进行分组

在 mysql 中,我无法foreign_id根据最大的value. 奇怪的是,不同版本的 mysql 都可以工作(如下所列)

我尝试拉 ids 2,3,5 而不是 1,3,5

0 投票
1 回答
907 浏览

mysql - 如何在分组前排序(mysql,mariadb)

我已经寻找了相当长的时间来回答这个问题。看起来应该很简单,但我不确定它是否......

设置:

一个数据库有两个表:my_contacts 和 my_sales。

每个联系人可以有一个或多个销售。每个销售都有一个创建日期,可以打开或关闭。

挑战:

我想生成一个查询来返回一个连接的结果集,每个联系人只有一个记录,如下所示:

  • 如果联系人有任何未结销售,请返回最近创建的销售。
  • 如果没有未结销售,则退回最近创建的销售。

我尝试按 is_open、create_date_time 排序,然后按 contact_id 分组 - 但 Group By 声明它在进行任何排序之前选择其记录,因此它不起作用。

数据库详细信息:

结果:

该查询将连接两个表并产生以下结果:

0 投票
0 回答
53 浏览

sql - SQL - 按时间戳和 ID 选择行

我正在处理每家公司的参与度分数列表。

一家公司的结果片段:

在此处输入图像描述

我正在尝试生成一个队列分析表:

  • 每个 companyProfileID 的一行。
  • 每个engagementScore 的列按最新、第二晚等排序。

问题是时间戳之间的时间会有所不同,我无法弄清楚如何正确选择。换句话说,我需要的是基于绝对行定位而不是日期范围的“每个公司 ID 的最后得分”、“倒数第二”、“倒数第三”等列。

任何帮助都将不胜感激,在我发展业务时仍在学习 SQL。

0 投票
1 回答
48 浏览

mysql - MySQL group by 为一列提供错误数据?

我正在尝试获取满足此查询的 WHERE 条件的所有行,并按tickerSymbol 分组。每个tickerSymbol 有多行,所以我只是想为每个tickerSymbol 获取最后一行,这就是我按时间戳排序的原因。

这是表格:

我正在使用以下查询。该查询的工作原理是它返回tickerSymbol 为REGI、RGEN 或RNVA 的3 行,但报价列数据错误?

当我运行查询时,我得到:

就像我想要的那样,返回了 3 行,但是 id 和 quote 列中的数据是错误的。

SQLFiddle

这是我在 SQLFiddle 上运行的表 + 数据,http: //sqlfiddle.com/#!9/7aa8f9/2/0

你会看到它返回:

查询在 id + quote 列中返回错误的数据。它应该返回:

0 投票
2 回答
1374 浏览

mysql - 用于 MySQL 的 Hadoop 用例

我有一个数据库,其中包含大约 400 万条美国股票、共同基金和 ETF 价格的 5 年记录,并且每天我都在为每种证券添加每日价格。

对于我正在开发的一项功能,我需要获取每种证券的最新价格(分组最大值),并使用其他财务指标进行一些计算。证券数量约为 40K。

但是这个数据量的分组最大值很重,需要几分钟才能执行。

当然,我的表使用索引,但任务涉及获取和实时处理近 7GB 的数据。

所以我很感兴趣,这个任务是针对大数据工具和算法还是少量数据?因为在示例中我注意到他们正在处理成千上万 GB 的数据。

我的数据库是 MySQL,我想使用 Hadoop 来处理数据。这是一种好的做法,还是我只需要使用 MySQL 优化(我的数据很小吗?),或者如果在这么多数据中使用 Hadoop 是错误的,你对这种情况有什么建议?

请注意,我每天的增长和项目涉及许多分析,需要根据用户要求实时完成。

注意不知道这个问题是否可以在stackoverflow中提问,所以如果问题离题,请见谅。

提前致谢!

0 投票
0 回答
241 浏览

mysql - 每天的 MySQL 性能 MAX()

我正在使用 mysql 5.5

这是我的桌子:

这张桌子有〜50m。记录。

这是我的查询:

此查询返回每天的最高温度。它的执行时间约为 0.9 秒。和子查询的时间0.003 秒。

我在日期和设备上有日期、设备列和多列索引 idx 的索引。解释说它使用设备索引进行查询,这很好(子查询非常快)。但是要获得每天的最高温度,我需要使用 Group BY。我知道索引列上的功能会禁用索引的使用,但我不知道如何提高效率并产生相同的结果。

我的问题:是否可以编写更高效并产生相同结果的查询,或者我应该处理子查询返回的行并自己找到每天的最高温度(这将用 c 编写)?

子查询平均返回 20-40k 行。

0 投票
0 回答
38 浏览

mysql - 如何在 INNER JOIN 中执行 ORDER BY 以获取最后状态更新?

我需要使用过滤器和排序来获取 2 个表的记录。表:ra_pedidos、ra_pedido_has_pedido_status

它在 MySQL5.0 中完美运行,但现在在 5.5 中它不再带来正确的结果。

我需要在同一行中显示每个请求的第一个状态和最后一个状态更改的日期,并忽略已取消的请求。

搜索示例(ra_pedido_has_pedido_status):

结果:

现在报告 SQL:
[编辑] 解释:JOIN获取第一个匹配行,然后ORDER BYSELECT此联接力中获取最后一行。请注意,id_pedido86622 不应列出,因为它已被取消(最后一个id_pedido_status= 90),并且已在HAVING

这是使用 MySQL 5.0 的结果,预期:

这是使用 MySQL 5.5 的结果,出乎意料:

我需要在 SQL 中更改什么?
谢谢和对不起我的英语...