SELECT
f.*,
q.day_avg_gmv
FROM
fact_purchases AS f
JOIN (
SELECT
ds,
AVG(gmv) AS day_avg_gmv
FROM
fact_purchases
WHERE
istest = FALSE
GROUP BY
ds
) AS q
ON q.ds = f.ds
WHERE
f.istest = FALSE
ORDER BY
f.ds
HAVING
f.gmv > q.day_avg_gmv
可以看到语句。我试着过滤那些超过平均水平的gmv。然而,我得到了这个错误:
错误:在"HAVING"处或附近有语法错误
我知道我可以在哪里使用这个条件f.gmv > q.day_avg_gmv
来解决问题,但我想知道为什么它在HAVING中不起作用。
在SQL中只能使用having
和group by
。
你不能使用它没有group by
。