我不明白为什么我不能在此语句中使用 HAVING


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中只能使用havinggroup by

你不能使用它没有group by

最新更新