postgresql组和排序

时间:2013-11-25 11:07:53

标签: sql postgresql group-by

我需要在一些参数中重新排序查询,并提取具有最低价格的唯一字段“文章”。 我应该按其他参数排序。

示例表:

article         price   id_item   name    partner weight
1000000001      500     1         Cake 1  sony    100
1000000001      1000    2         Cake 2  apple   100
1000000002      500     3         Beer 1  htc     100
1000000002      1000    4         Beer 2  htc     200

我需要通过其他参数(名称,价格,合作伙伴和其他......)排序这个结果:
按名称:

1000000002      500     3         Beer 1 htc  100
1000000001      500     1         Cake 1 sony 100

名称DESC:

1000000001      500     1         Cake 1 sony 100
1000000002      500     3         Beer 1 htc  100

由合作伙伴:

1000000002      500     3         Beer 1 htc  100
1000000001      500     1         Cake 1 sony 100

1 个答案:

答案 0 :(得分:1)

您不必对数据进行分组并获得最小值。 distinct on会将price

内的所有记录设置为最小article
select distinct on (article)
    article, price, id_item, name
from rurbox_mod_product.item
order by article, price

<强> sql fiddle demo

如果要对结果集进行排序,可以使用公用表表达式或子查询,然后对结果进行排序:

with cte as (
    select distinct on (article)
        article, price, id_item, name
    from item
    order by article, price
)
select *
from cte
order by name;

select *
from (
    select distinct on (article)
        article, price, id_item, name
    from item
    order by article, price  
) as A
order by name desc;

<强> sql fiddle demo

相关问题