我有一个名为sql_hr
的数据库,其中有一个表employees
。
以下是.sql文件的内容,该文件创建具有表sql_hr
的{{1}}数据库:
employees
好的,现在显示表DROP DATABASE IF EXISTS `sql_hr`;
CREATE DATABASE `sql_hr`;
USE `sql_hr`;
CREATE TABLE `employees` (
`employee_id` int(11) NOT NULL,
`first_name` varchar(50) NOT NULL,
`last_name` varchar(50) NOT NULL,
`job_title` varchar(50) NOT NULL,
`salary` int(11) NOT NULL,
`reports_to` int(11) DEFAULT NULL,
`office_id` int(11) NOT NULL,
PRIMARY KEY (`employee_id`),
KEY `fk_employees_offices_idx` (`office_id`),
KEY `fk_employees_employees_idx` (`reports_to`),
CONSTRAINT `fk_employees_managers` FOREIGN KEY (`reports_to`) REFERENCES `employees` (`employee_id`),
CONSTRAINT `fk_employees_offices` FOREIGN KEY (`office_id`) REFERENCES `offices` (`office_id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `employees` VALUES (37270,'Yovonnda','Magrannell','Executive Secretary',63996,NULL,10);
INSERT INTO `employees` VALUES (33391,'D\'arcy','Nortunen','Account Executive',62871,37270,1);
INSERT INTO `employees` VALUES (37851,'Sayer','Matterson','Statistician III',98926,37270,1);
INSERT INTO `employees` VALUES (40448,'Mindy','Crissil','Staff Scientist',94860,37270,1);
INSERT INTO `employees` VALUES (56274,'Keriann','Alloisi','VP Marketing',110150,37270,1);
INSERT INTO `employees` VALUES (63196,'Alaster','Scutchin','Assistant Professor',32179,37270,2);
INSERT INTO `employees` VALUES (67009,'North','de Clerc','VP Product Management',114257,37270,2);
INSERT INTO `employees` VALUES (67370,'Elladine','Rising','Social Worker',96767,37270,2);
INSERT INTO `employees` VALUES (68249,'Nisse','Voysey','Financial Advisor',52832,37270,2);
INSERT INTO `employees` VALUES (72540,'Guthrey','Iacopetti','Office Assistant I',117690,37270,3);
INSERT INTO `employees` VALUES (72913,'Kass','Hefferan','Computer Systems Analyst IV',96401,37270,3);
INSERT INTO `employees` VALUES (75900,'Virge','Goodrum','Information Systems Manager',54578,37270,3);
INSERT INTO `employees` VALUES (76196,'Mirilla','Janowski','Cost Accountant',119241,37270,3);
INSERT INTO `employees` VALUES (80529,'Lynde','Aronson','Junior Executive',77182,37270,4);
INSERT INTO `employees` VALUES (80679,'Mildrid','Sokale','Geologist II',67987,37270,4);
INSERT INTO `employees` VALUES (84791,'Hazel','Tarbert','General Manager',93760,37270,4);
INSERT INTO `employees` VALUES (95213,'Cole','Kesterton','Pharmacist',86119,37270,4);
INSERT INTO `employees` VALUES (96513,'Theresa','Binney','Food Chemist',47354,37270,5);
INSERT INTO `employees` VALUES (98374,'Estrellita','Daleman','Staff Accountant IV',70187,37270,5);
INSERT INTO `employees` VALUES (115357,'Ivy','Fearey','Structural Engineer',92710,37270,5);
:
employees
我想编写一个查询,以基于这样的条件,即从那些拥有USE sql_hr;
SELECT * FROM employees;
的每组员工中仅返回一些客户,这些条件是这些客户的office_id
应该比拥有该客户的所有客户的平均工资高特定的office_id。
现在,我想共享两个查询(1)和(2),在查询后显示输出:
(1):
salary
SELECT
employee_id,
first_name,
salary
FROM employees e
WHERE salary> (
SELECT AVG(salary)
FROM employees
WHERE office_id= e.office_id);
我以为上面两个查询的意思是一样的。但是事实证明,根据问题,查询(1)是正确的,但(2)不是。为什么查询(2)与查询(1)不同?
答案 0 :(得分:2)
第一个查询返回薪水高于其所属ReactDOM.render(React.createElement(TestCom, {}), document.getElementById('matches'));
的平均薪水的员工。
这是这种情况的作用:
office_id
第二个查询返回薪水高于所有平均薪资的员工,这意味着:薪水高于所有WHERE salary> (
SELECT AVG(salary)
FROM employees
WHERE office_id= e.office_id);
个职位的最高平均薪资。
这是条件:
office_id
子查询:
WHERE salary> ALL(
SELECT AVG(salary)
FROM employees
GROUP BY office_id);
返回所有SELECT AVG(salary)
FROM employees
GROUP BY office_id
的所有平均值。
因此,当您希望薪水高于所有薪金时,您的意思是大于全部薪金。