sql - 如果列是 avg,Sql,我如何按 desc 或 asc 对行进行排序
问题描述
这是我的代码:
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)
时,它都不起作用。谁能解释原因并提供解决方案?
解决方案
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;
推荐阅读
- react-router-dom - 在路径中使用用户名来路由组件(React-router-dom)
- .net-core - 用于不同表的 SQL Server 的 Serilog 过滤器表达式
- javascript - 在给定的对象数组中删除和添加新对象时格式错误
- python - 在 VSC 中使用 Python 函数调用技巧和方法建议
- reactjs - React js在显示对象时显示错误
- flutter - 如何根据验证器动态更改 textformfield 中 errorstyle 的颜色?
- css - Sass & 用于特定标签并有特定的孩子
- xcode - tvOS Info.plist 文件中 CFBundleIcons.CFBundlePrimaryIcon 键的预期值是多少?
- c++ - C++ 类中构造函数声明后的术语
- reactjs - 如何将 django url 链接到解耦的反应应用程序