我正在尝试在查询中添加一个额外的列。根据avarage薪水,它应写入BELOW或ABOVE列,但它不起作用。有什么问题?
SELECT CONCAT(firstname, lastname) AS name
FROM workers
CASE
WHEN salary < avg(salary) THEN 'BELOW'
WHEN salary > avg(salary) THEN 'ABOVE'
ELSE 'AVARAGE'
END;
答案 0 :(得分:1)
case
属于select
子句:
SELECT CONCAT(firstname, lastname) AS name
(CASE WHEN salary < avg(salary) THEN 'BELOW'
WHEN salary > avg(salary) THEN 'ABOVE'
ELSE 'AVERAGE'
END)
FROM workers;
这解决了第一个问题。下一个问题是您有聚合函数但没有聚合。你真正想要的是一个分析函数:
SELECT CONCAT(firstname, lastname) AS name
(CASE WHEN salary < AVG(salary) OVER () THEN 'BELOW'
WHEN salary > AVG(salary) OVER () THEN 'ABOVE'
ELSE 'AVERAGE'
END)
FROM workers;