如何最大化一列而不是最大化另一列以避免重复组合 SQL

How to max one column than max another column to avoid repeated combinations SQL

一个 b c
ID1 日期 1 5
ID1 日期 2 5
ID2 日期 3 4
ID2 日期 4 4
ID3 日期 5 5
ID4 日期 6 6
ID5 日期 7 2
ID6 日期 8 2

a 是一个 ID(字符串) b 是一个日期 c 是一个字符串 d 是一个整数

这是我正在使用的 SQL 查询

select S."a","b","c" from
    (select max("d"), "a"
    from public."x"
    group by "a") F
    join "x" S on F."max" = S."d"
    and S."a" = F."a"
    LIMIT 10;

如何在 table 中只保留 a 和 c 的唯一配对。这样保留的行是与较晚的 b 值(较晚的日期)的配对?例如,如果 table 中的 Date1 晚于 table 中的 date2,我只想包括包含 Date1 的 ID1/C 组合,而不是还包括 ID1/C 组合包含 Date2.

我是 Sql 的新手,感谢您的耐心等待!

select a,c,max(b) from 
(<your query>) as Q
group by a,c

为了简单起见,假设上面的限制为 10。如果你把它放在那里而不按顺序排列,你只会随机分组 10。

如果你真的想要 10,你需要将 TOP 移到内部查询之外 并添加一个 ORDER BY 以便它选择一个有用的 10。