2017-01-07 10 views
1

最初のクエリ を他のスタッフに導くスタッフを取得し、2番目のWanneはavarage以上の収益を得るスタッフの平均給与を取得します。しかし、私は両方を組み合わせて、彼らのために働くスタッフの平均給与よりも給与の2倍以上を稼ぐ管理者を得る。SQL AVG給与再帰クエリ

SELECT c.EmpID,c.name,c.gender,c.salary,c.supervisorFK,c.branchFK,c.position 
FROM  staff c INNER JOIN staff u ON c.EmpID = u.supervisorFk 
join (select avg(salary) avg_salary from staff) x 
    on c.salary*2 > avg_salary 
GROUP BY c.EmpID,c.name,c.gender, c.salary, c.branchFK,c.supervisorFK,c.position 

は私がすることはできません31本の安打を得る:

SELECT c.EmpID,c.name,c.gender,c.salary,c.supervisorFK,c.branchFK,c.position 
FROM  staff c INNER JOIN staff u ON c.EmpID = u.supervisorFk 
GROUP BY c.EmpID,c.name,c.gender, c.salary, c.branchFK,c.supervisorFK,c.position 


select name, salary, avg_salary 
from staff 
join (select avg(salary) avg_salary from staff) x 
    on salary > avg_salary 

は、私はこれを試してみました。間違いはどこですか? 関連する質問が見つかりませんでした。私の質問のいくつかは他の質問から取ったものです。 おかげ

ソースデータ:

insert into Staff values (1, 'Robert King'  ,'M', 143000.0,NULL, 'B002', 'Director'); 
insert into Staff values (2, 'Rafael McDonalds' ,'M', 72000.0, 1,'B001', 'Manager'); 
insert into Staff values (3, 'John White'  ,'M', 60000.0, 1,'B003', 'Manager'); 
insert into Staff values (4, 'Susan Brand'  ,'F', 55000.0, 1,'B004', 'Manager'); 
insert into Staff values (5, 'Cathy Brown'  ,'F', 32000.0, 2,'B001', 'Supervisor'); 
insert into Staff values (6, 'Claire Dujeune' ,'F', 79000.0, 1,'B010', 'Manager'); 
insert into Staff values (7, 'Patty Summer'  ,'F', 23000.0, 2,'B001', 'Supervisor'); 
insert into Staff values (8, 'Mary Fleming'  ,'F', 43000.0, 1,'B011', 'Manager'); 
insert into Staff values (10, 'Anne Beech'  ,'F', 26000.0, 5,'B001', 'Assistant'); 
insert into Staff values (12, 'Paul Coplien'  ,'M', 27000.0, 3,'B003', 'Supervisor'); 
insert into Staff values (13, 'David Ford'  ,'M', 41000.0, 1,'B012', 'Manager'); 
insert into Staff values (14, 'Mary Howe'  ,'F', 55000.0, 1,'B005', 'Manager'); 
insert into Staff values (15, 'Julie Lee'  ,'F', 34000.0, 3,'B003', 'Supervisor'); 
insert into Staff values (16, 'Aaron Young'  ,'M', 74000.0, 1,'B013', 'Manager'); 
insert into Staff values (17, 'Albert Thomson' ,'M', 25000.0,13,'B012', 'Supervisor'); 
insert into Staff values (21, 'Alexander Reynolds','M', 37000.0, 5,'B001', 'Assistant'); 
insert into Staff values (18, 'Christine McDonalds','F',38000.0, 4,'B004', 'Supervisor'); 
insert into Staff values (19, 'Elisa Pinkerton' ,'F', 36000.0,16,'B013', 'Supervisor'); 
insert into Staff values (20, 'Eric Montgomery' ,'M', 33000.0, 7,'B001', 'Assistant'); 
insert into Staff values (22, 'Edward Robinson' ,'M', 28000.0, 7,'B001', 'Assistant'); 
insert into Staff values (23, 'Jesse Owens'  ,'M', 34000.0, 4,'B004', 'Supervisor'); 
insert into Staff values (25, 'Johnatan Hunter' ,'M', 45000.0, 1,'B014', 'Manager'); 
insert into Staff values (26, 'Lenita Kennedy' ,'F', 56000.0, 1,'B009', 'Manager'); 
insert into Staff values (27, 'Lisa Miller'  ,'F', 34000.0,25,'B014', 'Supervisor'); 
insert into Staff values (28, 'Lilly Jennings' ,'F', 36000.0,14,'B005', 'Supervisor'); 
insert into Staff values (29, 'Rafaela Johnson' ,'F', 23000.0,12,'B003', 'Assistant'); 
insert into Staff values (32, 'Harry Anderson' ,'M', 40000.0,12,'B003', 'Assistant'); 
insert into Staff values (33, 'George Bailey' ,'M', 73000.0, 1,'B006', 'Manager'); 
insert into Staff values (34, 'Salomon Beckett' ,'M', 46000.0, 1,'B008', 'Manager'); 
insert into Staff values (35, 'Susan Armstrong' ,'F', 28000.0,15,'B003', 'Assistant'); 
insert into Staff values (36, 'Rosa Hemingway' ,'F', 30000.0,15,'B003', 'Assistant'); 
insert into Staff values (37, 'Martha McDonalds' ,'F', 31000.0,15,'B003', 'Assistant'); 
insert into Staff values (38, 'Anna-Isabell Green','F', 32000.0,33,'B006', 'Supervisor'); 
insert into Staff values (39, 'Tina Hall-Becker' ,'F', 34000.0,18,'B004', 'Assistant'); 
insert into Staff values (40, 'Thomas Harrison' ,'M', 42000.0, 1,'B007', 'Manager'); 
insert into Staff values (42, 'Winston Hughes' ,'M', 22000.0,40,'B007', 'Supervisor'); 
insert into Staff values (44, 'Walter Jefferson' ,'M', 23000.0,18,'B004', 'Assistant'); 
insert into Staff values (45, 'Zara Newton'  ,'F', 24000.0,23,'B004', 'Assistant'); 
insert into Staff values (46, 'Nina McDonalds' ,'F', 25000.0,23,'B004', 'Assistant'); 
insert into Staff values (48, 'Carol Moore'  ,'M', 27000.0,40,'B007', 'Supervisor'); 
insert into Staff values (51, 'Alexander Porter' ,'M', 29000.0,17,'B012', 'Assistant'); 
insert into Staff values (52, 'Maria Quasimodo' ,'M', 30000.0,17,'B012', 'Assistant'); 
insert into Staff values (53, 'Bertrand Russel' ,'M', 31000.0,34,'B008', 'Supervisor'); 
insert into Staff values (54, 'Ashley Parker' ,'M', 25500.0,28,'B005', 'Assistant'); 
insert into Staff values (55, 'John Stuart'  ,'M', 23500.0,28,'B005', 'Assistant'); 
insert into Staff values (56, 'Ruth Sanderss' ,'F', 27700.0,19,'B013', 'Assistant'); 
insert into Staff values (57, 'Rafael Smith'  ,'M', 32000.0,19,'B013', 'Assistant'); 
insert into Staff values (58, 'Viola Rutherford' ,'F', 21000.0,27,'B014', 'Assistant'); 
insert into Staff values (59, 'Sammy Churchill' ,'M', 22000.0,27,'B014', 'Assistant'); 
insert into Staff values (60, 'Miriam Thorne' ,'F', 26000.0,27,'B014', 'Assistant'); 
insert into Staff values (61, 'Sally Thatcher' ,'F', 36000.0,34,'B008', 'Supervisor'); 
insert into Staff values (62, 'Larry Escott'  ,'M', 33000.0,26,'B009', 'Supervisor'); 
insert into Staff values (63, 'William Spencer' ,'M', 32000.0, 6,'B010', 'Supervisor'); 
insert into Staff values (64, 'Diana Ashley-Bell','F', 38000.0, 8,'B011', 'Supervisor'); 
insert into Staff values (65, 'Audrey Thorne' ,'F', 25000.0,62,'B009', 'Assistant'); 
insert into Staff values (66, 'Paula Burns'  ,'F', 24000.0,62,'B002', 'Assistant'); 
insert into Staff values (67, 'Amanda Wallis' ,'F', 23000.0,38,'B006', 'Assistant'); 
insert into Staff values (68, 'Patty Stokes'  ,'F', 22000.0,53,'B008', 'Assistant'); 
insert into Staff values (69, 'Holly Fields'  ,'F', 21500.0,53,'B008', 'Assistant'); 
insert into Staff values (70, 'Martha McCulloch' ,'F', 26000.0,61,'B008', 'Assistant'); 
insert into Staff values (71, 'Maurin Best'  ,'F', 22500.0,42,'B007', 'Assistant'); 
insert into Staff values (72, 'Martha McDonalds' ,'F', 23500.0,27,'B014', 'Assistant'); 
insert into Staff values (73, 'Barrigan' ,NULL, 23500.0,27,'B013', 'Assistant'); 
insert into Staff values (47, 'Naomi Campell' ,'F', 26000.0,63,'B010', 'Assistant'); 
insert into Staff values (49, 'Tony McDonalds' ,'M', 28000.0,63,'B010', 'Assistant'); 
insert into Staff values (50, 'Margret McElroy' ,'F', 29000.0,64,'B011', 'Assistant'); 
insert into Staff values (9, 'Carl Maier'  ,'M', 31000.0,64,'B011', 'Assistant'); 

テーブルのスタッフを作成します。

CREATE TABLE Staff (
EmpID int, 
name varchar(30) NOT NULL, 
gender char(1) NULL 
CHECK (gender in ('M','F')), 
salary decimal(7,1) NOT NULL, 
supervisorFK int NULL, 
branchFK char(4) NOT NULL, 
position char(10) 
CHECK (position in ('Director','Manager','Supervisor','Assistant')), 

PRIMARY KEY (EmpID) 
); 
+1

使用しているデータベースであなたの質問にタグを付けます。 –

+0

テーブルを作成するコードは良いだろう – fafl

+0

は、テーブルのコードを作成 – IsoFunCode

答えて

1

あなたが平均の半分以上を稼ぐマネージャーを選択しています。

on c.salary*2 > avg_salary 

は次のようになります。

on c.salary/2 > avg_salary 

それとも

on c.salary > avg_salary * 2 
+0

を追加しましたありがとうこれは素晴らしいです私はクエリの構文で忙しかったので、クエリの背後にあるロジックをチェックすることを忘れてしまった:) – IsoFunCode