大神来帮帮新手吧,一个SQL两表查询的问题

table store
store_id city space
wh1 new yourk 370
wh2 beijing 500
wh3 new york 200
wh4 london 400

table employee
store_id emp_id salary
wh1 e1 1220
wh1 e3 1210
wh2 e4 1250
wh2 e6 1230
wh3 e7 1300
wh3 e8 1240
wh4 e9 1350
wh4 e11 1280

question1:get the employees who are paid the max salary for each city.(can create temporary tables)

quetion2:get the total salary,the total space,the number of store,the number of employee and maximum salary of every city.show the results as following layout.(can create temorary tables)

City Tot.Salary Tot.Space #store #employee Max Salary
... ... ... ... ... ...

作者: lijie19890625   发布时间: 2011-06-11

1.
SQL code
create table employee(store_id varchar(10),emp_id varchar(10),salary int)
insert into employee select 'wh1','e1',1220
insert into employee select 'wh1','e3',1210
insert into employee select 'wh2','e4',1250
insert into employee select 'wh2','e6',1230
insert into employee select 'wh3','e7',1300
insert into employee select 'wh3','e8',1240
insert into employee select 'wh4','e9',1350
insert into employee select 'wh4','e11',1280
go
select * from employee a where not exists(select 1 from employee where store_id=a.store_id and salary>a.salary)
/*
store_id   emp_id     salary
---------- ---------- -----------
wh1        e1         1220
wh2        e4         1250
wh3        e7         1300
wh4        e9         1350

(4 行受影响)
*/

作者: qianjin036a   发布时间: 2011-06-11

SQL code
select 
  *
from
  tb t
where
  salary=(select max(salary) from tb where store_id=t.store_id )

作者: fredrickhu   发布时间: 2011-06-11

第2个题是什么意思?

作者: fredrickhu   发布时间: 2011-06-11

SQL code

--question1
with t as
(
select t1.city,t2.emp_id,t2.Salary
from store t1,
     employee t2
Where t1.store_id=t2.store_id
)
select t1.*
from t t1
where not exists(select 1 from t t2 where t1.city=t2.city and t1.Salary<t2.Salary)

作者: X_0   发布时间: 2011-06-11

SQL code

--question2
with a as
(
select t1.city,t1.space,t2.store_id,t2.emp_id,t2.Salary
from store t1,
     employee t2
Where t1.store_id=t2.store_id
)
select t1.city,
TotSalary=(select sum(t2.Salary) from a t2 where t2.city=t1.city),
Totspace=(select sum(t3.space) from a t3 where t3.city=t1.city),
numstore=t1.store_id,
numemployee=t1.emp_id
MaxSalary=t1.Salary
from a t1
where not exists(select 1 from a t4 where t1.city=t4.city and t1.Salary<t4.Salary)


作者: X_0   发布时间: 2011-06-11

qestion2.
SQL code
SELECT  A.[city], SUM(B.[salary]) 'Tot.salary', SUM(A.[space]) 'Tot.space',
COUNT(DISTINCT A.[store_id]) '#store',COUNT(DISTINCT B.[emp_id]) '#employee', MAX(B.[salary]) 'Max Salary' FROM store A INNER JOIN employee B ON A.[store_id]=B.[store_id]
GROUP BY A.[city]

作者: ForFumm   发布时间: 2011-06-11