当前位置: 首页 > 知识库问答 >
问题:

mysql按最大值选择分组并获取唯一行

韦棋
2023-03-14

在MySql表中拥有以下数据

unit_code                                   |       amount  |       effective_from
52599244-6a7f-408b-a1fc-41278a31af59        |       12000       |       7/1/2021
167e3920-daf0-4f24-ab61-d5efb22a37d0        |       12000       |       7/1/2021
ca8efdeb-817f-4ab9-a959-edef8663bcfa        |       12000       |       7/1/2021
463d5cd5-b30a-46a5-ae7e-95f6f6924edf        |       12000       |       7/1/2021
346264ad-4fa3-48d6-b3ca-830a0ff9a1e6        |       12000       |       7/1/2021
80c2fa42-be9e-4550-a377-04cd63468ba9        |       12000       |       7/1/2021
b2153987-2bff-4c91-9777-16a2f920b990        |       12000       |       7/1/2021
6c9769d9-6478-4698-a777-99d6141ade34        |       4500        |       7/1/2021
b57fcf7e-1403-4fcc-a2f6-70b235b7eea1        |       4500        |       7/1/2021
a67362ef-ff05-45bf-94f8-725d0cf030da        |       4500        |       7/1/2021
288ea5cf-8e1c-4d26-b891-b59579119853        |       4500        |       7/1/2021
3b0f137b-b965-450a-a729-70b50286fa43        |       4500        |       7/1/2021
c9f14429-92dc-4698-853d-7f8831bd30dd        |       4500        |       7/1/2021
be15e011-221b-45e1-a493-df5959546a54        |       4500        |       7/1/2021
8701bdeb-6948-405f-81c3-6958c1e6f727        |       4500        |       7/1/2021
68e4fd8e-6fc1-431d-9b75-0c9766129aa5        |       4500        |       7/1/2021
776b706d-bc19-416e-8b9c-e479b55d3be2        |       4500        |       7/1/2021
7ac72a15-7028-41c3-879b-a478198dd8be        |       4500        |       7/1/2021
06e93241-d08a-4f43-87a9-ceae07e05c80        |       4500        |       3/1/2021
09e46ea7-d0de-4c64-aa9c-a2886a5e7211        |       4500        |       7/1/2021
495c7790-a248-49db-90b6-1be1814f52c8        |       4500        |       7/1/2021
71fa2c19-6149-4e20-8562-9186da99ac68        |       4500        |       7/1/2021
08cb1844-0c38-4f76-8aed-9a5b2d4c0519        |       4500        |       7/1/2021
898a9228-8d70-4a4a-8330-6e68dfef96f7        |       4500        |       7/1/2021
1c12922b-48a2-4aea-8d3f-3c8a881ad835        |       4500        |       7/1/2021
7f6fbc36-9749-422c-8f58-6dd49171fde4        |       4500        |       7/1/2021
523a10ce-f334-45b0-a1cd-58ac57de80f7        |       4500        |       7/1/2021
167e3920-daf0-4f24-ab61-d5efb22a37d0        |       6700        |       7/1/2021
167e3920-daf0-4f24-ab61-d5efb22a37d0        |       11996       |       7/1/2021
167e3920-daf0-4f24-ab61-d5efb22a37d0        |       6800        |       8/1/2021
95363e75-7ee6-4202-b7b1-5f681d560355        |       10000       |       28/1/2021
cf8fe894-18d6-47ec-ad3e-84828003455e        |       10000       |       28/1/2021
1c684a35-812b-4107-8c3e-27859293f6d6        |       10000       |       28/6/2021
50c42b42-c889-41c0-a572-8075f1341ad1        |       10000       |       28/1/2021
35a9d086-1dec-4151-a8ab-21610a8752af        |       10000       |       28/1/2021
ebb6ab8b-d933-4ee6-966b-968155def517        |       10000       |       28/1/2021
a7d10c49-420d-4c75-a2c1-f48cc4fb159e        |       6000        |       25/2/2021
405272f0-a100-476a-8263-5856e090b561        |       12000       |       8/3/2021
ebe9571d-f7df-4dc8-bc50-230eac24dd6a        |       12000       |       8/3/2021
4f52d59a-090d-4a5c-ba39-d4352be57336        |       12000       |       8/3/2021
1d81b529-fb5f-42cd-b624-c1547614337f        |       12000       |       7/3/2021
1d81b529-fb5f-42cd-b624-c1547614337f        |       6788        |       9/3/2021
346264ad-4fa3-48d6-b3ca-830a0ff9a1e6        |       888         |       9/1/2021
06e93241-d08a-4f43-87a9-ceae07e05c80        |       669         |       13/3/2021

我想选择唯一的unit_code(unit_code可以在表中的unit_code列中出现几次),日期为最大值且日期等于或小于今天的金额和日期。我在努力,但还没有接近结果。

共有1个答案

鲁展
2023-03-14

可以使用row_number()查找所需的行。例如:

select *
from (
  select *,
    row_number() over(partition by unit_code
                      order by effective_from desc) as rn
  from t
  where effective_from <= curdate()
) x
where rn = 1
 类似资料:
  • 我有对象要按文档ID分组。分组后,我想获得它们的“最大值”。这就是我目前掌握的: 文档类: 重要的是,我已经实现了一个compareTo函数。我不确定在< code>groupingBy子句的< code>reducer参数中放什么。我也试过: 但无济于事。

  • 我有一个熊猫DataFrame看起来像这样: 我的目标是能够为每个项目计算每个日期之间的价值差异。例如,我想找到A项: 12(32-20,因为最大年份是2012年,最小年份是2010年)和B项:20 (40 - 20,因为最大年份是2019年,最小年份是2016年)。 我使用以下代码获取每个项目的年最大值和年最小值: 然后,我找到每个项目的年份最小值和年份最大值。然而,我坚持做我想要的。

  • 我有一个包含三列字符串的数据框。我知道第三列中只有一个值对前两列的每个组合都有效。要清理数据,我必须按数据帧按前两列进行分组,并为每个组合选择第三列的最常用值。 我的代码: 最后一行代码不起作用,它说“关键错误‘简称’”,如果我试图只按城市分组,那么我得到了一个断言错误。我能做什么来修复它?

  • 问题内容: 如果要从整个表中选择最小值和最大值,则可以使用以下方法: 但是,如何仅从表的一部分中选择最小值和最大值?例如,我在一个表中有30行。我想从前十行中选择最小值和最大值,然后从后十行中选择,然后形成最后的10行。 我已经尝试过类似的东西 但这没有用。 如何用最少的查询解决此问题? 问题答案: 此外,MySQL具有一项很酷的功能,可让您返回任意范围的行(例如,返回10-20行)。这对于显示记

  • 问题内容: 这应该是一个简单的问题,但我无法使其起作用:( 如何按另一列分组选择具有最大列值的行? 例如, 我有以下表格定义: 现在的问题是,我想先按结果分组,然后再从每组中选择一行,具体取决于哪一组具有最高的。 我试过了 但是,与其以正确的方式回报我,不如以同一个小组中最早的回报我。 有任何想法吗? 问题答案: 我本人为此进行了很多次努力,解决方案是以不同的方式考虑您的查询。 我希望其中具有该D

  • 我有这样的数据: 自然有许多地点和许多产品每个地点。我希望以这样的数据流结束: 我想出了最常见的方法,用这个。 在将其扩展到N个最常见的时,我可以创建另一个删除这些行的dataframe,再次运行该过程以获得第二个最常见的,并按位置将它们连接在一起。通过适当的列命名,可以将其放入循环中运行N次,每次迭代添加一个列。 然而,这将是非常缓慢的,因为它将划分和加入每个迭代。例如,我如何以更好的方式获得每