【问题标题】:select multiple columns with max from one column and distinct on another从一列中选择具有最大值的多列,而在另一列中选择不同的列
【发布时间】:2016-05-21 20:30:06
【问题描述】:

所以我想选择所有具有不同contractNo和最大版本号的记录。

所以我有一张这样的桌子:

| username | contractNo | versionNo |
|===================================|
| lucian   |     1      |     1     |
| john     |     2      |     1     |
| lucian   |     2      |     1     |
| kris     |     3      |     1     |
| lucian   |     1      |     2     |
| david    |     4      |     1     |
| lucian   |     1      |     4     |
| adam     |     5      |     1     |
| lucian   |     2      |     2     |
| kris     |     3      |     2     |
| lucian   |     3      |     1     |
| lucian   |     1      |     3     |
| lucian   |     1      |     5     |
| lucian   |     4      |     1     |

我想选择以下记录:

| username | contractNo | versionNo |
|===================================|
| lucian   |     1      |     5     |
| lucian   |     2      |     2     |
| lucian   |     3      |     1     |
| lucian   |     4      |     1     |

我有这个查询,但是这只会以按 contractNo 和 versionNo 的降序返回它们。

SELECT username, contractNo, versionNo 

FROM contracts 

WHERE useremail = 'lucian'

order by contractNo, versionNo desc;

我相信我需要进行某种加入,但我不确定如何。

任何帮助将不胜感激。

【问题讨论】:

  • 我不知道那是什么。我正在通过 SQL Developer 运行我的查询,这就是您要问的......?
  • Join 适用于 2 个或更多表,但您只在上面指明了一个。

标签: sql greatest-n-per-group


【解决方案1】:

这应该可行:

SELECT
    username
    ,contractNo
    ,MAX(versionNo) AS versionNo
FROM contracts
WHERE username = 'lucian'
GROUP BY
    username
    ,contractNo
ORDER BY contractNo ASC

享受吧。

【讨论】:

    【解决方案2】:

    在子句中使用 subselect 和 group by

    SELECT username, contractNo, versionNo 
    FROM contracts 
    where  (username, contractNo, versionNo) in 
            (select username, contractNo, max(versionNo) 
                from contracts group by username, contractNo )
    and username = 'lucian';
    

    【讨论】:

      猜你喜欢
      • 2013-08-15
      • 1970-01-01
      • 2012-05-25
      • 2020-09-08
      • 2022-01-01
      • 1970-01-01
      • 2020-03-02
      • 2017-12-24
      相关资源
      最近更新 更多