。 select * from emp where deptno = 30;
2. すべての営業担当者の名前、番号、および部門番号を照会します。
select ename,empno,mgr from emp;
3. ボーナスが給与より高い従業員を検索します。
select * from emp where sai < comm;
4. ボーナスが給与より 60% 高い従業員を検索します。
select * from emp where sai < (comm * 0.6);
5. 部門番号 10 のすべてのマネージャーと部門番号 20 のすべての営業マンの詳細を調べます。
select * from emp where deptno in (10,20) and job in ('manager','salesperson');
6. 部門番号 10 のすべてのマネージャー、部門番号 20 のすべての営業担当者、およびそのどちらでもないすべての従業員の詳細を検索します。マネージャーでも営業マンでも、給与が 20000 以上の者。
select * from emp where (deptno = 10 and job = 'Manager') または (deptno = 20 and job = 'Sales') または (sai >= 20000 and job != 'Manager' and job !='Sales' );
7。 ボーナスなしまたはボーナスが 1,000 未満の従業員。
select * from emp where comm is null or comm < 1000;
8. 名前が 3 文字で構成される従業員をクエリします。
select * from emp where length(ename) = 9;
9. 2000 年に入社した従業員をクエリします。
select * from emp where year(hiredate)=2000;
10. 全従業員の詳細情報を問い合わせて番号昇順に並べ替えます
select * from emp order by empno;
11. 全従業員の詳細情報を問い合わせて並べ替えます給与が同じ場合は、エントリ Date ascending order
select * from emp order by sai desc,hiredate;
12. 各部門の平均給与をクエリ
select deptno,avg(sai) as total from emp group by deptno;
13. 各部門の従業員数をクエリ
select deptno, count(job) as total from emp group by deptno;
14. 各ジョブの最高賃金、最低賃金、人数をクエリ
select job,max(sai)ジョブごとの emp グループからの、min(sai)、count(job)。
select name,GROUP_CONCAT(ename) from emp3 e RIGHT JOIN dept3 d on e.dept_id = d.deptno GROUP BY name ;
2 研究開発部門の従業員をクエリ
select name,GROUP_CONCAT(ename) from emp3 e RIGHT JOIN dept3 d on e.dept_id = d.deptno and name='研究開発部門';
3. 研究開発部門と営業部門の従業員にクエリを実行
し、名前、GROUP_CONCAT(ename) from emp3 e RIGHT JOIN dept3 d on e.dept_id = d.deptno group by name and d.name='研究開発部' または d.name='営業部' ;
4. 各部門の従業員数をクエリし、昇順で並べ替えます
select name,count(deptno) as total from emp3 e left JOIN dept3 d on e.dept_id = d.deptno GROUP BY d.name HAVING NAME is not null ORDER BY total;
5. 番号が 3 以上の部門をクエリし、降順に並べ替えます人数に応じて
select name,count(deptno) as total from emp3 e left JOIN dept3 d on e.dept_id = d.deptno GROUP BY d.name HAVING NAME が null ではなく、合計 > 1 ORDER BY total desc
新しい従業員テーブル emp と部門テーブル dept を追加します
。 create table dept (dept1 int ,dept_name varchar(11));
create table emp (sid int ,name varchar(11),age int,worktime_start date,incoming int,dept2 int);
部門値
(101,'財務')、
(102,'営業')、
(103,'IT テクノロジー')、
(104,'管理') に挿入します。
emp 値に挿入
(1789,'張三',35,'1980/1/1',4000,101),
(1674,'李思',32,'1983/4/1',3500,101 ),
(1776,'王武',24,'1990/7/1',2000,101),
(1568,'趙劉',57,'1970/10/11',7500,102),
(1564 、'Rongqi',64,'1963/10/11',8500,102)、
(1879,'Niuba',55,'1971/10/20',7300,103);
1. 営業部門の最年長従業員の名前を調べます。 select name
from emp e ,dept d where e.dept2=d.dept1 and dept_name='sales' and age=(select max(age) from emp where dept2= ( select dept1 from dept where dept_name='sales'));
2. 財務部門の最低給与を持つ従業員の名前を検索します
select name from emp e ,dept d where e.dept2=d.dept1 and dept_name=' Finance' and incoming=(
select min(incoming) from emp where dept2=(select dept1 from dept where dept_name='service'));
3. 各部門の合計収入が 9000 を超える部門名をリストします
select dept_name from dept d,(select dept2 from emp group by dept2 getting sum(incoming)> 9000 ) e where d.dept1=e.dept2;
4. 7500 ~ 8500 元の給与を尋ね、最年長の人の名前と所属を
選択します。 dept_name, `name` from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 WHERE incoming >= 7500 AND incoming <= 8500 and d.dept_name = '売上' 年齢順に注文 LIMIT 1;
5. 営業部門で最も収入の低い従業員の入社時刻を検索します
SELECT worktime_start FROM emp e RIGHT JOIN dept d ON e.dept2 = d.dept1 where d.dept_name = 'Sales' ORDER BY incoming ASC LIMIT 1;
6 . 財務部門の収入は次を超えています Select name
from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 where d.dept_name = 'finance' and incoming > 2000;
7. 各部門の平均収入と部門名をリストします。
select dept_name ,AVg(incoming) from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 group by dept_name;
8.
select sid from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 where d.dept_name = 'IT テクノロジー'
9. 財務部門の収入の合計;
select dept_name, sum(incoming) from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 WHERE d.dept_name = 'finance' ;
10 .部門ごとに並べ替え最初に番号を入力し、入力時刻に従って従業員情報テーブルを早い順から遅い順に並べ替えます。
select * from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 ORDER BY dept2,worktime_start;
11. まだ従業員がいない部門を調べます;
select dept_name from emp e RIGHT JOIN dept d on e.dept2 = d。 dept1 WHERE worktime_start is NULL;
12. 収入が 7000 を超える部門従業員の部門番号と部門名をリストします; select
dept1, dept_name from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 WHERE incoming > 7000;
13従業員の合計所得と各部門の部門名をリストします。
select dept_name,sum(incoming) from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 group by dept_name
14. 各部門の最年長従業員の名前と部門名をリストします;
select MAX(age), dept_name from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 group by dept_name
15. Li Si の収入と部門名を調べます
select `name`,incoming,dept_name from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 where name = 'Li Si'
16. 各部門の最高収入の従業員の名前、部門名、収入をリストします。 , そして、emp e RIGHT JOIN dept d on e.dept2 = d.dept1 から name,MAX(incoming),dept_name を選択し、収入の降順で
dept_name でグループ化します。
17. 従業員が 1 人以上いる部門の名前をリストします
select dept_name, dept2 from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 group by dept_name HAVING COUNT(dept2) > 1; 19.
Zhang San がいる場所を見つける部門名
select dept_name from emp e RIGHT JOIN dept d on e.dept2 = d.dept1 where name = 'Zhang San'