选择没有重复项的所有条目?

时间:2014-08-29 20:57:39

标签: sql

我有表productos

nombre  Precio  Tienda   Departamento

  A      23      Belén     Hogar
  B      12      Belén     Hogar
  C      56      Belén     Hogar
  C      32      Terra     Hogar
  D      10      Belén     Hogar
  E      8       Belén     Hogar
  E      9       Terra     Hogar

我需要选择表productos上的所有条目,但是对于具有多个条目的产品,我希望价格最高的产品,无论它是否在同一个tienda上。

1 个答案:

答案 0 :(得分:0)

select p.*
  from productos p
  join (select nombre, max(precio) as max_precio
          from productos
         group by nombre) v
    on p.nombre = v.nombre
   and p.precio = v.max_precio

以下内容将消除Oracle或SQL Server或PostgreSQL中的联系(如果您未使用Oracle或SQL Server,请指定您正在使用的数据库):

select *
  from (select nombre,
               precio,
               tienda,
               departamento,
               row_number() over(partition by nombre order by nombre, precio desc, tienda, departamento) as rn
          from productos) x
 where rn = 1

消除领带的小提琴示例: http://sqlfiddle.com/#!6/6b40d/4/0