0

私は2つのテーブルを持っています:

人:

empid(主キー)
ファーストネーム
苗字
Eメール

詳細:

Did(主キー)
給料
指定
せっかちな

次に、給与が 3 番目に高い従業員の名、姓、給与を選択します。

私は初心者なので、シンプルにしてください。

また、ソリューションを含む SQL クエリの演習を見つけることができるサイトを提案していただければ幸いです (オンライン インタープリターは必要ありません。演習用に SQL Server 2008 を持っています)。今すぐ演習が必要です。sql.ex.ru を試しましたが、あまり役に立ちませんでした。

4

3 に答える 3

1

これを試して:

SELECT   top 1 P.*,a.salary 
FROM     Persons p
JOIN
         (select top 3 empid,salary from Details order by salary desc)a
ON       p.empid=a.empid
ORDER BY p.salary

また

;WITH CTE AS
 (SELECT *,
         ROW_NUMBER() OVER (ORDER BY SALARY DESC) AS ROW_NUM
 FROM DETAILS)
 SELECT * 
 FROM  PERSONS P
 JOIN  CTE C
 ON    P.EMPID=C.EMPID
 where c.ROW_NUM=3
于 2012-08-31T14:26:24.417 に答える
1

ここにちょっとしたトリックがあります。それが行うことは、各行にシーケンス番号または行番号を追加して、給与による順序付けを行うことです。次に、3 番目のものを選択します。

select FirstName, LastName, Salary
from (select p.FirstName, p.LastName, d.salary,
             row_number() over (order by salary desc) as seqnum
      from persons p join
           details d
           on p.empid = d.empid
     ) t
where seqnum = 3

row_number() 関数がこの計算を行います。これは、SQL の知識に追加できる非常に便利な関数です。

于 2012-08-31T15:24:51.070 に答える
0
SELECT TOP 1 persons.FirstName, persons.LastName, Salary 
FROM persons inner join Details
ON persons.empid=Details.empid 
where Salary not in(SELECT TOP 2 Salary from Details ORDER BY Salary DESC)
order by Salary desc
于 2012-08-31T14:39:11.280 に答える