1

如何在我的数据中省略零?

例如使用 MIN 函数?我想要除 0 以外的最小值...

我怎样才能获得下一个最大的?

MIN(availables.price)

如果我使用 AVG 功能,是否还有一种以相同方式跳过 0 的一般方法?问题是我继承的表不使用 NULL 值,但所有财务数据的值为 0.00。

谢谢,

4

7 回答 7

8

尝试:

SELECT
    MIN(x)
    FROM ....
    where x<>0

也适用于 AVG:

SELECT
    avg(x)
    FROM ....
    where x<>0
于 2009-09-01T14:26:26.780 回答
5

你在rails上使用ruby吗?我想你是因为这被标记为 ruby​​-on-rails,在这种情况下,你可以简单地做

Available.minimum(:price, :conditions => "price > 0")

或者

Available.average(:price, :conditions => "price > 0")

希望有帮助=)

于 2009-09-01T14:29:51.873 回答
3
SELECT  MIN(CASE price WHEN 0 THEN NULL ELSE price END)
FROM    availables
于 2009-09-01T14:25:03.520 回答
2

只需使用where子句将零从查询中删除即可。

select min(price)
from price_table
where price > 0;

select avg(price)
from price_table
where price > 0;
于 2009-09-01T14:28:04.780 回答
2
SELECT MIN(availables.price) FROM availables WHERE availables.price <> 0.0

如果您想排除小于 0 的任何值,也可以使用 >。如果您使用 float 或 smallfloat 数据类型,请注意浮点舍入问题。

如果有 NULL,您还可以将 where 子句列包装在 ISNULL(availables.price, 0.0) 中以排除这些。

于 2009-09-01T14:28:21.033 回答
2
SELECT  MIN(price)
FROM    availables
WHERE price <> 0
于 2009-09-01T14:28:31.267 回答
2

也许它可以完成工作

SELECT MIN(availables.price)
FROM   availables
WHERE  0 < availables.price
于 2009-09-01T14:29:00.317 回答