2013-11-25 87 views
1

我需要重新安排我的查询中的一些参数与价格最低提取的固有领域“文章”。 我应该按其他参数排序。

示例表:PostgreSQL的分组和排序

 
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

您不必对数据进行分组并获取分钟数。 distinct on将采取内article

select distinct on (article) 
    article, price, id_item, name 
from rurbox_mod_product.item 
order by article, price 

sql fiddle demo

最小price的所有记录,如果要排序的结果集,你可以使用公共表表达式或子查询,然后对结果进行排序:

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

+0

这是不正确的。 我需要通过另一个参数进行排序。 – user3030748

+0

如果你需要找到“最低”值,但随后使用其他一些参数排序,则需要先返回上面的SQL到一个新表(使用别名),然后做一个选择它周围,做你的其他种类的 – nrathaus

+0

你能请给我一个例子吗? – user3030748