質問
を考慮するOracle emp
表に示す。いてみたいと思い、従業員の給与と department = 20
や job = clerk
.もとはありませんempno"の列に主キーを数列あります。できること:
select * from scott.emp
where deptno = 20 and job = 'CLERK'
and sal = (select max(sal) from scott.emp
where deptno = 20 and job = 'CLERK')
この作品にもしています複製、試験deptno=20job='係るように避けなければなりません。あまりエレガントに書かを使用 group by
?ちなみに、この事項を使っていますので、Oracle社
解決
以下は少しオーバーではSQLのパターン"トップ×ます。
SELECT
*
FROM
scott.emp
WHERE
(deptno,job,sal) IN
(SELECT
deptno,
job,
max(sal)
FROM
scott.emp
WHERE
deptno = 20
and job = 'CLERK'
GROUP BY
deptno,
job
)
また、この作Oracle、Postgress(う)がMS SQL.も似MS SQL見る質問 SQLクエリーの最新価格
他のヒント
また特定のターゲットデータベースなったと思いマークが付ざソリューションだった一方言agnostic SQL*、
SELECT *
FROM scott.emp e
WHERE e.deptno = 20
AND e.job = 'CLERK'
AND e.sal = (
SELECT MAX(e2.sal)
FROM scott.emp e2
WHERE e.deptno = e2.deptno
AND e.job = e2.job
)
*このばあいの環境としていたことが分かりました。
Oracle思い解析機能はまだみのクエリに電磁ポンプテーブル回:
SELECT *
FROM (SELECT e.*, MAX (sal) OVER () AS max_sal
FROM scott.emp e
WHERE deptno = 20
AND job = 'CLERK')
WHERE sal = max_sal
でよりシンプルで読みやすくなり、より効率的です。
を編集したいでリスト一覧はこの情報はすべての部門でしょうをご利用の場合は、"パーティショニングによる"条項:
SELECT *
FROM (SELECT e.*, MAX (sal) OVER (PARTITION BY deptno) AS max_sal
FROM scott.emp e
WHERE job = 'CLERK')
WHERE sal = max_sal
ORDER BY deptno
ことになる。知らなかったのができるようにな比較(x、y、z)を選択します。この作品は大きますので、Oracle社
としての側面についての注意その他の読者は、上記のクエリーが欠落、"="後"(deptno、職業、sal)".(粉を山にして真ん中をスタックオーバーフローフォーマッタを食べたので(?).
再度、マークです。
Oracleにお使いいただけますが、場合にはになります。
たとえば---名前を選択し、 からのカット がカットに (選択cust_idからbig_table) 入>SYSDATE-1 いにはログインが必要です。
が 名前を選択し、 からのカット c が存在する (選択cust_idからbig_table がcust_id=c.cust_id ) 入>SYSDATE-1 う非常に高速に適切な索引をすることもできます複数のパラメータ。
多くのソリューション。きもオリジナルのクエリーレイアウトを追加するだけテーブルのエイリアス-接合のカラム名というだけDEPTNO=20JOB='係に照会します。
SELECT
*
FROM
scott.emp emptbl
WHERE
emptbl.DEPTNO = 20
AND emptbl.JOB = 'CLERK'
AND emptbl.SAL =
(
select
max(salmax.SAL)
from
scott.emp salmax
where
salmax.DEPTNO = emptbl.DEPTNO
AND salmax.JOB = emptbl.JOB
)
そしてこのキーワードに"すべて"使用できるベンチャーキャピタルは、このクエリによって除す"最大"となる機能です。
SELECT
*
FROM
scott.emp emptbl
WHERE
emptbl.DEPTNO = 20
AND emptbl.JOB = 'CLERK'
AND emptbl.SAL >= ALL
(
select
salmax.SAL
from
scott.emp salmax
where
salmax.DEPTNO = emptbl.DEPTNO
AND salmax.JOB = emptbl.JOB
)
私のことは意味がある。