PostgreSQL:从咨询中获取最大值

时间:2015-10-18 23:50:51

标签: sql postgresql max

我需要从查询中获取的值列表中获取最大值。

基本上,问题是:

我有两张桌子:

  • 律师

    • id(PK)
    • 名称
  • 案例

    • id(PK)
    • id_Client
    • 日期
    • id_Lawyer(FK)

我需要让案件数量最多的律师......(这没有问题)但是,如果存在多个案件数量最多的律师,我应该列出它们。 任何有关这方面的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

SELECT l.*, cases
FROM  (
   SELECT "id_Lawyer", count(*) AS cases, rank() OVER (ORDER BY count(*) DESC) AS rnk
   FROM   "Case"
   GROUP  BY 1
   ) c
JOIN   "Lawyer" l ON l.id = c."id_Lawyer"
WHERE  c.rnk = 1;

该技术的基础知识(如@FuzzyTree provided):

您只需要一个子查询级别,因为您可以通过聚合函数运行窗口函数:

除此之外:最好在Postgres中使用合法的,小写的,不带引号的标识符。切勿使用类似Case的{​​{3}},这会导致非常混乱的错误。