Funções agregadas de SQL usando MIN e AVG
-
20-09-2019 - |
Pergunta
Como posso omitir zeros nos meus dados?
Por exemplo, usando a função Min? Eu gostaria do valor mínimo, exceto um 0 ...
Como posso obter o próximo maior?
MIN(availables.price)
Também existe uma maneira de pular mais de 0s da mesma maneira se eu estiver usando a função AVG? O problema é que a tabela que herdei não usa valores nulos, mas tem 0,00 para todos os dados financeiros.
Obrigado,
Solução
tentar:
SELECT
MIN(x)
FROM ....
where x<>0
Funciona com AVG também:
SELECT
avg(x)
FROM ....
where x<>0
Outras dicas
Você está usando Ruby on Rails? Eu supunha que você é, já que isso é marcado como rubi-se-haste, nesse caso, você pode simplesmente fazer
Available.minimum(:price, :conditions => "price > 0")
ou
Available.average(:price, :conditions => "price > 0")
Espero que ajude =)
SELECT MIN(CASE price WHEN 0 THEN NULL ELSE price END)
FROM availables
Basta deixar os zeros fora da consulta com um where
cláusula.
select min(price)
from price_table
where price > 0;
select avg(price)
from price_table
where price > 0;
SELECT MIN(price)
FROM availables
WHERE price <> 0
Talvez pudesse fazer o trabalho
SELECT MIN(availables.price)
FROM availables
WHERE 0 < availables.price
SELECT MIN(availables.price) FROM availables WHERE availables.price <> 0.0
Você também pode usar> se deseja excluir algo menos que 0. Cuidado com os problemas de arredondamento de pontos flutuantes se estiver usando tipos de dados float ou smallfloat.
Se houver nulos, você também poderá embrulhar a coluna da cláusula WHERE em um isnull (upnables.price, 0,0) para excluí -las também.