这是我的代码:
SELECT make, AVG(x)
FROM y
GROUP BY make
ORDER BY AVG(x) DESC <===== this is the part I'm stuck on
HAVING COUNT(x) > 0
LIMIT 10
我正在尝试打印出前10个x。我已经设置了10个限制。
我遇到的问题是订单部分。每当我使用order by avg(x)
时,它都将不起作用。谁能解释原因并提供解决方案?
答案 0 :(得分:1)
SQL中子句的顺序很重要。您的情况下,正确的顺序是:
SELECT make, avg(x)
FROM y
GROUP BY make
HAVING count(x) > 0
ORDER BY avg(x) DESC
LIMIT 10;
HAVING
在GROUP BY
之后。 ORDER BY
在HAVING
之后。
请注意,您还可以使用列别名来编写ORDER BY
:
SELECT make, avg(x) as average
FROM y
GROUP BY make
HAVING count(x) > 0
ORDER BY average DESC
LIMIT 10;