代码之家  ›  专栏  ›  技术社区  ›  elbarna

db2 sql,如何在同一个查询中只获取一个表的最小值和最大值?

  •  0
  • elbarna  · 技术社区  · 4 年前

    有了这个问题

    SELECT distinct name,MIN(price) minprice, MAX(price) maxprice FROM cars where group='CNO' GROUP BY name HAVING MIN(price) > 1 order by minprice;
    

    我得到了这个结果

    NAME                                     MINPRICE    MAXPRICE   
    ---------------------------------------- ----------- -----------
    Super CNO                                      20000       20000
    CNO 340                                        40000       40000
    CNO 110                                        60000       60000
    CNO 790                                       100000      100000
    

    如何只得到最低和最高价格,看看什么车最贵?

    NAME                                     MINPRICE    MAXPRICE   
    ---------------------------------------- ----------- -----------
    Super CNO                                      20000       20000
    CNO 790                                       100000      100000
    

    1 回复  |  直到 4 年前
        1
  •  1
  •   GMB    4 年前

    您可以使用窗口函数。结果显示min和max具有相同的值,这使我怀疑每个名称只有一行。如果是:

    select *
    from (
        select name, price,
            rank() over(order by price desc) rn_desc,
            rank() over(order by price) rn_asc
        from cars 
        where price > 1
    ) c
    where 1 in (rn_asc, rn_desc)
    

    select *
    from (
        select name, min(price) min_price, max(price) max_price
            rank() over(order by max(price) desc) rn_desc,
            rank() over(order by min(price)) rn_asc
        from cars 
        group by name
        having min(price) > 1
    ) c
    where 1 in (rn_asc, rn_desc)