1. ホーム
  2. データベース
  3. デービーツー

DB2 より一般的で実用的なSQL文のまとめ

2022-01-24 15:04:53
1、従業員の番号、名前、部署、生年月日を検索し、生年月日がNULLの場合、日付が不明と表示し、部署ごとに出力をソートし、日付形式はyyyy-mm-ddです。
コピーコード コードは以下の通りです。

select emp_no,emp_name,dept,isnull(convert(char(10),birthday,120),'date unknown') birthday
from employee
order by dept

  2. Yu Ziqiangと同じユニットに所属する従業員の名前、性別、部署、役職を検索する。
コピーコード コードは以下の通りです。

select emp_no,emp_name,dept,title
from employee
where emp_name<>'喻自强' and dept in
(select dept from employee
where emp_name='喻自强')

  3. 部門別に集計し、各部門の給与の合計をカウントする
コピーコード コードは以下の通りです。

select dept,sum(salary)
from employee
group by dept

  4、商品名14インチモニターで商品の売上を検索し、商品番号、売上数量、単価、金額を表示する
コピーコード コードは以下の通りです。

select a.prod_id,qty,unit_price,unit_price*qty totprice
from sale_item a,product b
where a.prod_id=b.prod_id and prod_name='14" monitor'

  5、売上内訳表の商品番号で集計し、商品ごとに売上数量と金額をカウントする。
コピーコード コードは以下の通りです。

select prod_id,sum(qty) totqty,sum(qty*unit_price) totprice
from sale_item
group by prod_id

  6、変換関数を使用して、1996年の各顧客の顧客番号による注文の合計金額をカウントする
コピーコード コードは以下の通りです。

select cust_id,sum(tot_amt) totprice
from sales
where convert(char(4),order_date,120)='1996'
group by cust_id

  7. 顧客番号、名前、注文合計を売上記録で検索する
コピーコード コードは以下の通りです。

select a.cust_id,cust_name,sum(tot_amt) totprice
from customer a,sales b
where a.cust_id=b.cust_id
group by a.cust_id,cust_name

  8、1997年に販売実績のある顧客番号、名前、注文合計を検索します。
コピーコード コードは以下の通りです。

select a.cust_id,cust_name,sum(tot_amt) totprice
from customer a,sales b
where a.cust_id=b.cust_id and convert(char(4),order_date,120)='1997'
group by a.cust_id,cust_name

  9、一度に最大の売上を記録した販売記録を探す
コピーコード コードは以下の通りです。

select order_no,cust_id,sale_id,tot_amt
from sales
where tot_amt=
(select max(tot_amt)
from sales)

  10、3回以上販売したセールスマンのリストと販売日を検索する。
コピーコード コードは以下の通りです。

select emp_name,order_date
from employee a,sales b
where emp_no=sale_id and a.emp_no in
(select sale_id
from sales
group by sale_id
having count(*)>=3)
order by emp_name

  11、存在量詞を使用して注文記録のない顧客名を検索する
コピーコード コードは以下の通りです。

select cust_name
from customer a
where not exists
(select *
from sales b
where a.cust_id=b.cust_id)

  12. 各顧客の顧客番号、名前、注文日、注文金額注文日は、顧客番号、同じ顧客とし、順序降順の出力で並べ替え、日付形式yyyy - mm - ddの時間を表示しない見つけるために左外側のリンクを使用する
コピーコード コードは以下の通りです。

select a.cust_id,cust_name,convert(char(10),order_date,120),tot_amt
from customer a left outer join sales b on a.cust_id=b.cust_id
order by a.cust_id,tot_amt desc

  13、16M DRAMの売上を検索し、該当する販売員の名前、性別、売上日、売上数量、金額を表示させるよう依頼する(性別は男性、女性で表示される)。
コピーコード コードは以下の通りです。

select emp_name Name, gender= case a.sex when 'm' then 'male'
when 'f' then 'female'
else 'not'
end,
date of sale = isnull(convert(char(10),c.order_date,120),'date unknown'),
qty quantity, qty*unit_price as amount
from employee a, sales b, sale_item c,product d
where d.prod_name='16M DRAM' and d.prod_id=c.prod_id and
a.emp_no=b.sale_id and b.order_no=c.order_no

  14、各人の販売記録を検索し、販売員の番号、氏名、性別、商品名、数量、単価、金額、販売日を表示させるよう依頼する。
コピーコード コードは以下の通りです。

select emp_no number,emp_name name, gender= case a.sex when 'm' then 'male'
when 'f' then 'female'
else 'not'
end,
prod_name Product name,sell_date= isnull(convert(char(10),c.order_date,120),'date unknown'),
qty quantity, qty*unit_price as amount
from employee a left outer join sales b on a.emp_no=b.sale_id , sale_item c,product d
where d.prod_id=c.prod_id and b.order_no=c.order_no

  15、売上金額と購入金額の合計が最大となる顧客名を検索する
コピーコード コードは以下の通りです。

select cust_name,d.cust_sum
from customer a,
(select cust_id,cust_sum
from (select cust_id, sum(tot_amt) as cust_sum
from sales
group by cust_id ) b
where b.cust_sum =
( select max(cust_sum)
from (select cust_id, sum(tot_amt) as cust_sum
from sales
group by cust_id ) c )
) d
where a.cust_id=d.cust_id

16、販売員番号、名前、総売上高が1000ドル未満の売上を探す
コピーコード コードは以下の通りです。

select emp_no,emp_name,d.sale_sum
from employee a,
(select sale_id,sale_sum
from (select sale_id, sum(tot_amt) as sale_sum
from sales
group by sale_id ) b
where b.sale_sum <1000
) d
where a.emp_no=d.sale_id

  17、販売された少なくとも3つの商品の顧客番号、顧客名、商品番号、商品名、数量、金額を確認する。
コピーコード コードは以下の通りです。

select a.cust_id,cust_name,b.prod_id,prod_name,d.qty,d.qty*d.unit_price
from customer a, product b, sales c, sale_item d
where a.cust_id=c.cust_id and d.prod_id=b.prod_id and
c.order_no=d.order_no and a.cust_id in (
select cust_id
from (select cust_id,count(distinct prod_id) prodid
from (select cust_id,prod_id
from sales e,sale_item f
where e.order_no=f.order_no) g
group by cust_id
having count(distinct prod_id)>=3) h )

  18. ワールド技研が販売するものと同等以上の顧客番号、名称、商品番号、商品名、数量、金額を探す。
コピーコード コードは以下の通りです。

select a.cust_id,cust_name,d.prod_id,prod_name,qty,qty*unit_price
from customer a, product b, sales c, sale_item d
where a.cust_id=c.cust_id and d.prod_id=b.prod_id and
c.order_no=d.order_no and not exists
(select f.*
from customer x ,sales e, sale_item f
where cust_name='World Technology Development Corporation' and x.cust_id=e.cust_id and
e.order_no=f.order_no and not exists
( select g.*
from sale_item g, sales h
where g.prod_id = f.prod_id and g.order_no = h.order_no and
h.cust_id = a.cust_id)
)

  19、劉という名前の従業員全員の勤務番号、部署、給与を表から探す。
コピーコード コードは以下の通りです。

select emp_no,emp_name,dept,salary
from employee
where emp_name like 'Liu%'

  20. 2000以上のすべての注文の顧客番号を検索する
コピーコード コードは以下の通りです。

select cust_id
from sales
where tot_amt>2000

  21. 統計表のうち、給与が4000~6000の従業員数
コピーコード コードは以下の通りです。

select count(*)as number of people
from employee
where salary between 4000 and 6000

  22、同じ部署の従業員の平均給与を表で照会します。ただし、"住所"が"上海の従業員のみです。
コピーコード コードは以下の通りです。

select avg(salary) avg_sal,dept
from employee
where addr like 'Shanghai%'
group by dept

  23、テーブルの住所が "上海" である従業員の住所を "北京" に変更します。
コピーコード コードは以下の通りです。

update employee
set addr like 'Beijing'
where addr like 'Shanghai'

  24、事業部や経理部に所属する女性社員の基本情報を調べる。
コピーコード コードは以下の通りです。

select emp_no,emp_name,dept
from employee
where sex='F' and dept in ('business','accounting')

  25、各商品の売上金額の合計を表示し、売上金額の降順で出力します。
コピーコード コードは以下の通りです。

select prod_id ,sum(qty*unit_price)
from sale_item
group by prod_id
order by sum(qty*unit_price) desc

26. 顧客番号、顧客名、顧客住所のうち、番号が「C0001」と「C0004」で囲まれたものを選択します。
コピーコード コードは以下の通りです。

select CUST_ID,cust_name,addr
from customer
where cust_id between 'C0001' AND 'C0004'

  27. 合計で何個の製品が売れたか計算しなさい。
コピーコード コードは以下の通りです。

select count(distinct prod_id) as 'Total number of products sold'
from sale_item

  28. 事業部員の給与を3%増額する。
コピーコード コードは以下の通りです。

update employee
set salary=salary*1.03
where dept='business'

  29、従業員テーブルから最低賃金の従業員情報を検索します。
コピーコード コードは以下の通りです。

select *
from employee
where salary=
(select min(salary )
from employee )

  30、結合を使用して、"顧客C"として顧客名、"注文金額、"注文日、"電話番号、購入商品の問い合わせをします。
コピーコード コードは以下の通りです。

select a.cust_id,b.tot_amt,b.order_date,a.tel_no
from customer a join sales b
on a.cust_id=b.cust_id and cust_name like 'customer c'

  31、販売テーブルから、注文金額が "E0013、1996/10/15 の日にセールスマンが取った各注文の金額" より大きい注文をすべて見つけます。
コピーコード コードは以下の通りです。

select *
from sales
where tot_amt>all
(select tot_amt
from sales
where sale_id='E0013' and order_date='1996/10/15')
order by tot_amt

  32. 製品「P0001」の平均販売単価を算出する。
コピーコード コードは以下の通りです。

select avg(unit_price)
from sale_item
where prod_id='P0001'

  33、自社の女性社員が受注した案件を調べる
コピーコード コードは以下の通りです。

select sale_id,tot_amt
from sales
where sale_id in
(select sale_id from employee
where sex='F')

  34、同日に入社した従業員を特定する。
コピーコード コードは以下の通りです。

select a.emp_no,a.emp_name,a.date_hired
from employee a
join employee b
on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired)
order by a.date_hired

  35. 現在の業績が232,000ドルを超えている従業員の番号と名前を求めよ。
コピーコード コードは以下の通りです。

select emp_no,emp_name
from employee
where emp_no in
(select sale_id
from sales
group by sale_id
having sum(tot_amt)<232000)