如果列为avg,Sql,如何按desc或asc排序行

时间:2018-09-09 20:36:19

标签: sql

这是我的代码:

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)时,它都将不起作用。谁能解释原因并提供解决方案?

1 个答案:

答案 0 :(得分:1)

SQL中子句的顺序很重要。您的情况下,正确的顺序是:

SELECT make, avg(x)
FROM y  
GROUP BY make
HAVING count(x) > 0 
ORDER BY avg(x) DESC
LIMIT 10;

HAVINGGROUP BY之后。 ORDER BYHAVING之后。

请注意,您还可以使用列别名来编写ORDER BY

SELECT make, avg(x) as average
FROM y  
GROUP BY make
HAVING count(x) > 0 
ORDER BY average DESC
LIMIT 10;