私には、給与と呼ばれる列で構成されるdepartmentsという表があります。今私は、各部門で最高の2つの給料の詳細をすべて知りたいと思っています。必要な出力が得られるクエリをどのように作成する必要がありますか?上位Nの分析は全体としてはそれを与えるが、各部門ではない。私は各部門のトップ2を欲しい。各部門の最初の2つの給料
3
A
答えて
5
私はOracleでこのことを尋ねました。私はそこにお手伝いできない。
しかし、おそらくMSSQL/TSQLのソリューションが表示されたら、それは役に立ちますか?
select
d.Salary
,d.Department
from
(
select
r.Salary
,r.Department
,row_number() over(
partition by r.Department
order by r.Salary desc) as RowNumber
from HumanResources as r
) as d
where d.RowNumber < 3
最高の運!
0
DECLARE @TV_SAL TABLE (EMPID INT, DEPTID CHAR(10),SAL INT)
INSERT INTO @TV_SAL(EMPID,DEPTID,SAL) VALUES(4,'OR',1004)
INSERT INTO @TV_SAL(EMPID,DEPTID,SAL) VALUES(5,'OR',1005)
INSERT INTO @TV_SAL(EMPID,DEPTID,SAL) VALUES(1,'OR',1001)
INSERT INTO @TV_SAL(EMPID,DEPTID,SAL) VALUES(2,'OR',1002)
INSERT INTO @TV_SAL(EMPID,DEPTID,SAL) VALUES(17,'CS',1503)
INSERT INTO @TV_SAL(EMPID,DEPTID,SAL) VALUES(18,'CS',1503)
INSERT INTO @TV_SAL(EMPID,DEPTID,SAL) VALUES(14,'CS',1500)
INSERT INTO @TV_SAL(EMPID,DEPTID,SAL) VALUES(15,'CS',1501)
SELECT *
FROM @TV_SAL A
WHERE (SELECT COUNT(DISTINCT(SAL))
FROM @TV_SAL B
WHERE A.SAL <= B.SAL
AND A.DEPTID = B.DEPTID
) <= 3 -- Replace this with 1 ,2 or n , n indicates top n
ORDER BY DEPTID, SAL DESC
+0
あなたのコードにいくつかのコメントを追加するにはどうしたらいいですか?どのように各部門のトップを取得しますか? – Yaroslav
-2
SELECT TOP 5 b.DepartName、
がb.DepartName ORDER BYによってa.DepartId = b.DepartId
基上
カテゴリーBをJOIN社員FROM a.Salary a.Salary DESC
これはSqlサーバーで正常に動作し、Oracleについて認識していません
関連する問題
- 1. sql - 5人以上のメンバーを持つ各部門の平均給与を見つける
- 2. department_id、last_name、各部門の最低給与はどのように表示しますか?上記
- 3. 各trと最初の2つのtdを取得
- 4. ポップアップ部門全体のウェブサイトで? (最初のページロード時)
- 5. 4つのサブ部門を持つヘッド部門
- 6. 各ページのスクロールバーからiFrameコンテナ部門の上部へ
- 7. のC#(ネット有料)(総給与)
- 8. department_id、job_id、および各部門の各職務分類の平均給与の表示方法を教えてください。
- 9. 最初の部分に2つの変数を持つPHP略語
- 10. トリム最初の2つの文字
- 11. 最大の給料のために個別の名前のSQLクエリ
- 12. 各部門の従業員数を調べる - SQL Oracle
- 13. 他の部門のレスポンシブ部門のクラス行
- 14. jQuery:各行の最初のセルについて
- 15. Javascript RegEx各段落の最初の行を見つける
- 16. 2の平方根の小数部の最初の64ビット
- 17. jQuery最初のレベルの各div
- 18. テーブルから最新の給料を引っ張ってみよう
- 19. 私のロゴ部門のセンタリング
- 20. CSS3の部門の高さ
- 21. 特定の部門のページスクラップ
- 22. 無料ホテルwifi各ページの上部にあるiframeを押す
- 23. 別の部門からリダイレクト
- 24. 部門のスナップショットを取る
- 25. スパークScalaのデータフレーム部門と
- 26. numpyの部門は:double_scalars
- 27. Javascriptの無限部門
- 28. Jquery SlideToggle別の部門
- 29. 2つのDatetimesの間の給与を計算するC#
- 30. C#Active Directoryの各部門からグループのリストを取得する方法
+1:O racleは、9i(実際には8iですが、詳細は覚えていません)以降の分析関数をWITH句とともにサポートしています(Oracleはそれを「サブクエリ分解」と呼んでいます)。 –
これはOracleで書かれているとおりに動作します。しかし、 'rownumber'よりも' rank'を使うほうが望ましいかもしれません。 'rownumber'は常に2行戻ってくることを保証しますが、最高給与が5人の間で同じであれば、一貫性を保証せずに半ランダムに2行を取得します。同じシナリオでは、 'rank'はすべての5を一貫して返します。 – Allan
Allan、あなたがコメントで共有したように、上記の質問を「ランク」と共有していただけますか –