mysql - “对于此服务器版本,选择在此位置无效,需要 '(' WITH"
问题描述
我目前正在尝试运行 SQL 查询并得到错误:"Select is not valid at this position for this server version, expecting '(' WITH"
. 我已经阅读了具有相同错误的其他帖子,它似乎与子查询中缺少逗号有关。据我所知,我没有遗漏任何逗号。
SELECT employees.Location, AVG(employees.salaries) as AvgLocSal
FROM employees,
(SELECT employees.Location, AVG(employees.salaries) as b
FROM employees
GROUP BY employees.Location) as otherSal
GROUP BY employees.Location
HAVING AvgLocSal >= all(otherSal.b);
简而言之,我正在比较不同地点的平均工资,并找到工资最高的地点。
我可以通过将子查询放在 HAVING 子句中成功地做到这一点(如下所示),但我真的不确定为什么上面的查询会给出错误。
SELECT Location, AVG(salaries) as AvgLocSal
FROM employees
GROUP BY Location
HAVING AvgLocSal >= all(
SELECT AVG(salaries)
FROM employees
GROUP BY Location
);
我可以简单地按薪水排序列表,然后限制为 1,但是如果两个薪水相同,这将无法给出预期的结果。
任何想法都非常感谢。
谢谢,纳什
解决方案
正如您所提到的,您希望对不同地点的工资进行平均,并找到工资最高的地点。以下将为您提供预期的输出。
SELECT Location, AVG(salaries)
FROM employees
GROUP BY Location
ORDER BY 2 DESC
LIMIT 1;
或者:
SELECT MAX(avgSalary.salaries)
FROM (SELECT AVG(salaries) AS 'salaries' FROM employees GROUP BY Location) AS avgSalary;
推荐阅读
- django - 如何在 Wagtail admin 中为模型字段添加外键对象?
- visual-studio - 热重载不适用于 Razor 页面 VS2022
- ios - Laravel PWA、Epson Thermal Printer TM-30 与 ePos SDK、IPAD iOS 14.8 的打印问题
- microk8s - 将图像导入 microk8s 的问题
- reactjs - 如何通过单击 React JS 中的其他按钮来关闭切换按钮?
- td-engine - 如何在TDengine数据库中创建大写的数据库名或表名
- rust - 根据同一个Hashmap中的另一个值处理Hashmap中的值
- java - 数组行中数字的移动
- python-3.x - 在 Python 中匹配 arxiv 正则表达式
- python - 使用 docxtpl 模板/python(边框属性)完成此表的最佳方法