gpt4 book ai didi

mysql - 如何在 select 语句中使用 AVG(field)

转载 作者:行者123 更新时间:2023-11-29 07:54:45 24 4
gpt4 key购买 nike

我要解决的问题是:

列出所有薪资低于平均薪资的员工,并列出低于平均薪资的金额。

问题中的表格:

CREATE TABLE Staff
(`staffNo` varchar(4), `fName` varchar(5), `lName` varchar(5),
`position` varchar(10), `sex` varchar(1), `DOB` varchar(9),
`salary` int, `branchNo` varchar(4))
;

INSERT INTO Staff
(`staffNo`, `fName`, `lName`, `position`, `sex`, `DOB`, `salary`, `branchNo`)
VALUES
('SL21', 'John', 'White', 'Manager', 'M', '1-Oct-45', 30000, 'B005'),
('SG37', 'Ann', 'Beech', 'Assistant', 'F', '10-Nov-60', 12000, 'B003'),
('SG14', 'David', 'Ford', 'Supervisor', 'M', '24-Mar-58', 18000, 'B003'),
('SA9', 'Mary', 'Howe', 'Assistant', 'F', '19-Feb-70', 9000, 'B007'),
('SG5', 'Susan', 'Brand', 'Manager', 'F', '3-Jun-40', 24000, 'B003'),
('SL41', 'Julie', 'Lee', 'Assistant', 'F', '13-Jun-65', 9000, 'B005')
;

我一直在研究的解决方案是:

SELECT s.staffNo, s.fName, s.lName, s.salary
FROM Staff s
WHERE s.salary < (SELECT AVG(s.salary) FROM *)
ORDER BY s.salary DESC;

这有效,但它没有回答问题的最后部分,“......并列出多少。”

我曾想过像这样合并它:

SELECT staffNo, fName, lName, salary, (30000-salary) as Average
FROM Staff
WHERE salary < (SELECT AVG(salary) FROM Staff)
ORDER BY salary DESC;

但这只会给出一个错误......

您可以在这里提供任何帮助吗?

最佳答案

加入返回平均工资的子查询

SELECT staffNo, fName, lName, salary, avgSalary-salary AS salaryDiff, avgSalary
FROM Staff
JOIN (SELECT AVG(salary) AS avgSalary
FROM Staff) AS av
ON salary < avgSalary

DEMO

关于mysql - 如何在 select 语句中使用 AVG(field),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25459861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com