【发布时间】:2012-06-15 22:42:34
【问题描述】:
我有一个返回 avg(price) 的查询
select avg(price)
from(
select *, cume_dist() OVER (ORDER BY price desc) from web_price_scan
where listing_Type='AARM'
and u_kbalikepartnumbers_id = 1000307
and (EXTRACT(Day FROM (Now()-dateEnded)))*24 < 48
and price>( select avg(price)* 0.50
from(select *, cume_dist() OVER (ORDER BY price desc)
from web_price_scan
where listing_Type='AARM'
and u_kbalikepartnumbers_id = 1000307
and (EXTRACT(Day FROM (Now()-dateEnded)))*24 < 48
)g
where cume_dist < 0.50
)
and price<( select avg(price)*2
from( select *, cume_dist() OVER (ORDER BY price desc)
from web_price_scan
where listing_Type='AARM'
and u_kbalikepartnumbers_id = 1000307
and (EXTRACT(Day FROM (Now()-dateEnded)))*24 < 48
)d
where cume_dist < 0.50)
)s
having count(*) > 5
如果没有可用的值,如何让它返回0?
【问题讨论】:
-
你确定你的查询格式正确吗?
-
@LucM:这不可能是一个格式良好的查询。 (没有“group by”子句的“have”子句。)
-
一切正常,除了有时,当不满足规则时,它不会返回任何东西。另外,我怎么能平均分组,我认为不可能||有什么意义?多选
from web_price_scan是单独的选择;不知道这里有什么问题? -
可以使用不带
group by的having子句(默认为单个组)。它充当聚合结果的where子句。在这种情况下,只有当第一级子查询返回超过 5 行时才会返回这些行。
标签: sql postgresql