PostgreSQL中的多个最大值选择

时间:2018-07-24 07:55:56

标签: sql postgresql

我有一张这样的桌子:

<script>
    var l = document.getElementsByClassName("ae-copy-narrow");
                l[x].innerHTML = "some text";

</script>

我想从最近的日期中选择最大值 ID cbk due_16_30 due_31_60 1 2018-06-19 5 200 2 2018-06-19 100 -5 1 2018-06-19 -2 2 2 2018-06-18 20 Null 2 2018-06-18 50 22 1 2018-06-18 30 150 和最大值due_16_30,其中日期介于某个due_31_60start date之间。如何在end date中做到这一点?

更新1: 谢谢您的回答!我发现了另一种复杂性-如果我需要做同样的事情,但ID不同,该怎么办?现在,我看到的-它取了之间的最新日期,并且如果该日期没有特定ID的行,则会丢失该ID。

4 个答案:

答案 0 :(得分:2)

我希望这对您有帮助

select cbk, max(due_16_30), max(due_31_60)
from [table]
where cbk = (select max(cbk) 
            from [table] 
            where cbk >= start_date and 
                  cbk <= end_date
            ) 
group by cbk;

答案 1 :(得分:2)

首先在子查询中获取最新日期,然后获取最大到期日期:

select max(due_16_30) as max_due_16_30, 
       max(due_31_60) as max_due_31_60
  from tab
 where cbk in 
(
  select max(cbk)
    from tab
   where cbk between date'2018-06-18' and date'2018-06-19'
);

DB-Fiddle Demo

答案 2 :(得分:1)

一种替代方法是使用LIMTIT的{​​{1}}子句:

subquery

答案 3 :(得分:0)

尝试

select due_16_30,due_31_60 
from
(
    SELECT * 
    from your_table 
    ORDER BY cbk DESC 
    LIMIT 1
) as T