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

时间:2021-03-13 03:52:43

标签: mysql sql

在 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 个答案:

答案 0 :(得分:1)

您可以使用 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
相关问题