首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在select语句中使用AVG(字段)

如何在select语句中使用AVG(字段)
EN

Stack Overflow用户
提问于 2014-08-23 08:08:39
回答 1查看 49关注 0票数 0

我想解决的问题是:

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

问题表:

代码语言:javascript
复制
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')
;

我一直在研究的解决办法是:

代码语言:javascript
复制
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;

然而,这并不能回答问题的最后一节,即"...and列表多少“。

不过,我不得不把它合并成这样:

代码语言:javascript
复制
SELECT staffNo, fName, lName, salary, (30000-salary) as Average
FROM Staff
WHERE salary < (SELECT AVG(salary) FROM Staff)
ORDER BY salary DESC;

但这只会带来一个错误..。

你能在这里提供什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-23 08:20:47

加入一个返回平均薪资的子查询

代码语言:javascript
复制
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

演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25459861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档