如何在我的数据中省略零?使用MIN和AVG的SQL聚合函数
例如使用MIN函数?我想最小值除了0 ...
我怎样才能得到下一个最大的?
MIN(availables.price)
如果我使用AVG功能,还有一种通常的方法可以以相同的方式跳过0吗?问题是我继承的表不使用NULL值,但对于所有财务数据均为0.00。
感谢,
如何在我的数据中省略零?使用MIN和AVG的SQL聚合函数
例如使用MIN函数?我想最小值除了0 ...
我怎样才能得到下一个最大的?
MIN(availables.price)
如果我使用AVG功能,还有一种通常的方法可以以相同的方式跳过0吗?问题是我继承的表不使用NULL值,但对于所有财务数据均为0.00。
感谢,
尝试:
SELECT
MIN(x)
FROM ....
where x<>0
作品与AVG太:
SELECT
avg(x)
FROM ....
where x<>0
SELECT MIN(CASE price WHEN 0 THEN NULL ELSE price END)
FROM availables
刚刚离开零点出来的查询与where
条款。
select min(price)
from price_table
where price > 0;
select avg(price)
from price_table
where price > 0;
SELECT MIN(availables.price) FROM availables WHERE availables.price <> 0.0
您还可以使用>如果你想排除任何小于0要小心浮点四舍五入问题,如果你使用float或SMALLFLOAT数据类型。
如果存在NULL,那么也可以将where子句列包装在ISNULL(availables.price,0.0)中以排除这些列。
如果我没有记错,你不应该担心排除NULL,因为那些不包含在MIN聚合器中。 – Tadmas 2009-09-01 14:35:21
不符合标准,取决于您的平台和ANSI选项。在默认情况下为true的SQL服务器中,可能会更改。 – 2009-09-01 15:16:55
SELECT MIN(price)
FROM availables
WHERE price <> 0
也许它可以做
SELECT MIN(availables.price)
FROM availables
WHERE 0 < availables.price
您使用Ruby on Rails的工作?我以为你是因为这个被标记为的Ruby-on-轨道,在这种情况下,你可以简单地做
Available.minimum(:price, :conditions => "price > 0")
或
Available.average(:price, :conditions => "price > 0")
希望帮助=)
这是假设你不处理负面的价值观。 – 2009-09-01 14:30:13
好点,但价格为负? :) – Rippo 2009-09-01 14:39:23
OP说:“我想最小值除了0”,所以我编辑我的答案:_WHERE x> 0_到_WHERE x <> 0_然而,我不认为一个负的价格是可能的,但只是以防...... – 2009-09-01 15:08:28