SELECT empno, deptno
dense_rank() OVER (PARTITION BY deptno
ORDER BY sal NULLS LAST) SRLNO
FROM emp
WHERE deptno IN (10, 20)
group by empno, deptno --,sal
ORDER BY deptno, SRLNO;
Sal
group by 句にある必要があるため、このクエリは機能しませんでした。その理由を誰でも説明できますか? group by 句を変更せずに同じ選択でランクを取得する代替手段はありますか? 給料だけで順位をつけたい。
編集
empテーブルに別の列名commisionがあり、deptnoとcommisionでグループ化し、deptnoのみでパーティション化する必要があるとします。推奨される答えは次のとおりです。
SELECT empno, deptno,sum(sal)
dense_rank() OVER (PARTITION BY deptno
ORDER BY sal NULLS LAST) SRLNO
FROM emp
WHERE deptno IN (10, 20)
group by deptno,commision --,sal
ORDER BY deptno, SRLNO;
depno と commision でグループ化し、deptno でのみパーティション分割する方法を教えてください。
別の列でグループ化して、別の列での分割に基づいてランクを検索するにはどうすればよいですか