Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

SQL - Retorna linhas com a maioria das correspondências de coluna


Você pode usar a função rank() para isso:

SQLFiddle
select name, color1, color2, color3, prize 
  from (
    select t.*, rank() over (order by decode(color1, 'Red', 1, 0) 
        + decode(color2, 'Blue', 1, 0) + decode(color3, 'Green', 1, 0) desc) rnk
      from t)
  where rnk = 1

Isso retorna linha ou linhas com a maioria das correspondências.