私には、給与と呼ばれる列で構成される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. 各部門の上位2人の給与の差
- 2. 各部門で2番目に高い給与
- 3. 別の部門内の最初の部門を選択
- 4. 部門ごとの平均給与
- 5. SQL:各部門
- 6. sql - 5人以上のメンバーを持つ各部門の平均給与を見つける
- 7. department_id、last_name、各部門の最低給与はどのように表示しますか?上記
- 8. empno、ename、sal、deptno、dname、location、各部門の最高給与従業員を表示します。
- 9. AngularJSの部門に基づいて従業員の給料を引き上げる方法は?
- 10. ポップアップ部門全体のウェブサイトで? (最初のページロード時)
- 11. どのように異なる部門からn番目の最大給与を見つけるか?
- 12. 4つのサブ部門を持つヘッド部門
- 13. 各trと最初の2つのtdを取得
- 14. タプル関係計算の従業員部門と最低および最高給与のクエリ?
- 15. Oracleは最大給与のマネージャー給料とその従業員を見つけます
- 16. 各ページのスクロールバーからiFrameコンテナ部門の上部へ
- 17. 最初の2つの値
- 18. 最初の2つのグループ
- 19. Oracleで各部門の平均給与を表示するビューを作成しますか?
- 20. 従業員のファーストネームと最大給与をこの部門の部門別に取得するにはどうすればよいですか?
- 21. テーブルhr(oracle)から各地域の最大(平均(給与))を持つ部門を検索する必要があります
- 22. センター部門部門
- 23. 私の2つの部門は重複し続ける
- 24. は、そのDEPTNO 2と1つの部門
- 25. 最初のリストの最後の2つの要素= 2番目のリストの最初の2つの要素 - プロローグ
- 26. 次の給料日の取得
- 27. SQLの結合を使用して部門の最高平均給与を検索しますか?
- 28. テーブルの部門
- 29. のC#(ネット有料)(総給与)
- 30. Excel - 給料の計算方法
+1:O racleは、9i(実際には8iですが、詳細は覚えていません)以降の分析関数をWITH句とともにサポートしています(Oracleはそれを「サブクエリ分解」と呼んでいます)。 –
これはOracleで書かれているとおりに動作します。しかし、 'rownumber'よりも' rank'を使うほうが望ましいかもしれません。 'rownumber'は常に2行戻ってくることを保証しますが、最高給与が5人の間で同じであれば、一貫性を保証せずに半ランダムに2行を取得します。同じシナリオでは、 'rank'はすべての5を一貫して返します。 – Allan
Allan、あなたがコメントで共有したように、上記の質問を「ランク」と共有していただけますか –