データベース複合クエリの演習

給与が500を超える、またはポジションがMANAGERであると同時に、大文字のJでイニシャルを満たす従業員を照会します。

select * from EMP where (sal>500 or job='MANAGER') and ename like 'J%';

部門番号を昇順で並べ替え、従業員の給与を降順で並べ替えます

select * from EMP order by deptno, sal desc; 

年俸を使用して降順で並べ替える

select ename, sal*12+ifnull(comm,0) as '年薪' from EMP order by 年薪 desc; 

最高賃金の従業員の名前と役職を表示する

select ename, job from EMP where sal = (select max(sal) from EMP); 

平均給与より高い給与の従業員に関する情報を表示する

select ename, sal from EMP where sal>(select avg(sal) from EMP); 

各部門の平均給与と最大給与を表示する

select deptno, format(avg(sal), 2) , max(sal) from EMP group by deptno; 

部門番号と2000年未満の平均給与を表示する

select deptno, avg(sal) as avg_sal from EMP group by deptno having avg_sal<2000; 

各ポジションの総従業員数、平均給与を表示します

select job,count(*), format(avg(sal),2) from EMP group by job;

SMITHの同じ部門の従業員を表示する

select * from EMP WHERE deptno = (select deptno from EMP where ename='smith');

キーワードで;部門10と同じ仕事をしているが、自分の10を含まない従業員の名前、役職、給与、部門番号を照会する

select ename,job,sal,empno from emp where job in (select distinct job from emp where deptno=10) and deptno<>10;

allキーワード;部門30の全従業員よりも給与が高い従業員の名前、給与、部門番号を表示します

select ename, sal, deptno from EMP where sal > all(select sal from EMP where deptno=30); 

任意のキーワード;部門30のどの従業員よりも給与が高い従業員の名前、給与、部門番号を表示します

select ename, sal, deptno from EMP where sal > any(select sal from EMP where deptno=30);

SMITH自身を除く、SMITHと同じ部門および役職のすべての従業員について問い合わせる

select ename from EMP where (deptno, job)=(select deptno, job from EMP where ename='SMITH') and ename <> 'SMITH';

給与が2500を超えるか、位置がMANAGERである人を見つけます
(ユニオン:この演算子は、2つの結果セットのユニオンを取得するために使用されます。この演算子を使用すると、結果セット内の重複行は自動的に削除されますが、ユニオンを使用してもすべては削除されません。重複する行は削除されます。)

select ename, sal, job from EMP where sal>2500 union 
select ename, sal, job from EMP where job='MANAGER';--去掉了重复记录

おすすめ

転載: blog.51cto.com/14289397/2545151