我有张这样的桌子:
+----+------+--------+
| id | name | salary |
+----+------+--------+
| 1 | Ajay | 20000 |
| 2 | Aja | 2000 |
| 3 | Aj | 200 |
| 4 | A | 3000 |
| 5 | q | 30000 |
+----+------+--------+ 我想要写一个查询,可以打印最高工资,中等工资和最低工资。所以我写了这个查询:
select salary
from parent
where max(sal)
&& salary < ( SELECT MAX( salary )
FROM parent )
&& min(salary); mysql返回了一个错误:
ERROR 1111 (HY000): Invalid use of group function 什么是正确的查询?
发布于 2015-05-01 12:54:20
遗憾的是,MySQL没有提供聚合函数来获取中值。希望您可以使用平均值(算术平均值)。
MAX()、MIN()和AVG() (在WHERE术语中称为聚合函数)等东西不能出现在WHERE子句中。它们可以出现在SELECT和HAVING子句中。这就是你犯错误的原因。
你会想要
SELECT MAX(salary) max_salary,
AVG(salary) avg_salary,
MIN(salary) min_salary
FROM parent如果您控制您自己的MySQL服务器,并且您有一些MySQL dba裁剪,您可以安装一个用户定义的函数来计算中值。(如果您使用的是多租户MySQL服务器的托管服务,请忘记这一点。)看看这个。
发布于 2015-05-01 12:50:42
select 'min' as k, min(salary) as v from parent union select 'avg' as k, avg(salary) as v from parent union select 'max' as k, max(salary) as v from parent
https://stackoverflow.com/questions/29987095
复制相似问题