読者です 読者をやめる 読者になる 読者になる

落書きノート

ふと自分が気になった事を書いてます

SQLで問題を解く

とりあえず例題をそのまま打ち込み、実行結果を確認しました。

SQL> select goods_name 商品名,
  2  to_char(unit_price, '999,999') || '円' 単価
  3  from goods;

商品名               単価
-------------------- -----------
片手鍋                    500円
両手鍋                    800円
中華鍋                  1,800円
フライパン              1,500円

SQL> select goods_name 商品名,
  2  to_char(unit_price, '999,999') || '円' "     単価"
  3  from goods;

商品名                    単価
-------------------- -----------
片手鍋                    500円
両手鍋                    800円
中華鍋                  1,800円
フライパン              1,500円

SQL> select slip_id,
  2  to_date('1995-10-1', 'YY-MM-DD') - slip_date 経過日数
  3  from slip;

   SLIP_ID   経過日数
---------- ----------
     1   104
     2   100
     3   100
     4    97
     5    94
     6    90
     7    90
     8    86

8行が選択されました。

SQL> select cust_name 顧客名
  2  from customer
  3  where cust_id = 1;

顧客名
--------------------
古千谷商店

SQL> select goods_name 商品名, unit_price 単価
  2  from goods
  3  where unit_price >= 1000;

商品名                     単価
-------------------- ----------
中華鍋                     1800
フライパン                 1500

SQL> select goods_name 商品名
  2  from goods
  3  where unit_price * 0.7 > 1000;

商品名
--------------------
中華鍋
フライパン

SQL> select * from slip
  2  where slip_date <= '1995-06-30';

   SLIP_ID    CUST_ID SLIP_DAT
---------- ---------- --------
     1     2 95-06-19
     2     5 95-06-23
     3     4 95-06-23
     4     2 95-06-26
     5     3 95-06-29

SQL> select address 住所 from customer
  2  where cust_name = '古千谷商店';

住所
----------------------------------------
東京都足立区古千谷本町

SQL> select * from account
  2  where slip_id between 2 and 5;

ACCOUNT_ID    SLIP_ID   GOODS_ID    QTY
---------- ---------- ---------- ----------
     4     2         1    20
     5     3         3     5
     6     3         4     5
     7     4         1    15
     8     4         2    10
     9     5         3     7

6行が選択されました。

SQL> select * from slip
  2  where slip_date between '1995-06-25' and '1995-07-24';

   SLIP_ID    CUST_ID SLIP_DAT
---------- ---------- --------
     4     2 95-06-26
     5     3 95-06-29
     6     2 95-07-03
     7     1 95-07-03
     8     5 95-07-07

SQL> select cust_name 顧客名, address 住所
  2  from customer
  3  where address like '東京都%';

顧客名               住所
-------------------- ----------------------------------------
古千谷商店           東京都足立区古千谷本町
千代田商事           東京都千代田区大手町
竹の塚マート         東京都足立区竹の塚

SQL> select cust_name 顧客名, address 住所
  2  from customer
  3  where address like '%足立区%';

顧客名               住所
-------------------- ----------------------------------------
古千谷商店           東京都足立区古千谷本町
竹の塚マート         東京都足立区竹の塚

SQL> select cust_name 顧客名, address 住所
  2  from customer
  3  where address not like '東京都%';

顧客名               住所
-------------------- ----------------------------------------
竹里屋               埼玉県春日部市竹里
西日本商会           大阪府大阪市西区北堀江

SQL> select goods_name 商品名
  2  from goods
  3  where goods_name like '__鍋';

商品名
--------------------
片手鍋
両手鍋
中華鍋

SQL> select account_id 受注明細番号
  2  from account
  3  where goods_id in (3,4);

受注明細番号
------------
       2
       5
       6
       9
      12
      13

6行が選択されました。

SQL> select goods_name 商品名, unit_price 単価
  2  from goods
  3  where goods_name in ('中華鍋', 'フライパン');

商品名                     単価
-------------------- ----------
中華鍋                     1800
フライパン                 1500

SQL> select goods_name 商品名, unit_price 単価
  2  from goods
  3  where goods_name not in('中華鍋','フライパン');

商品名                     単価
-------------------- ----------
片手鍋                      500
両手鍋                      800

SQL> select goods_name 商品名, unit_price 単価
  2  from goods
  3  order by unit_price;

商品名                     単価
-------------------- ----------
片手鍋                      500
両手鍋                      800
フライパン                 1500
中華鍋                     1800

SQL> select slip_id 伝票番号, qty 受注数量
  2  from account
  3  where goods_id = 2
  4  order by qty;

  伝票番号   受注数量
---------- ----------
     7     5
     6    10
     1    10
     4    10

SQL> select goods_name 商品名, unit_price 単価
  2  from goods
  3  order by unit_price desc;

商品名                     単価
-------------------- ----------
中華鍋                     1800
フライパン                 1500
両手鍋                      800
片手鍋                      500

SQL> select * from account
  2  order by goods_id desc, slip_id;

ACCOUNT_ID    SLIP_ID   GOODS_ID    QTY
---------- ---------- ---------- ----------
     6     3         4     5
    13     6         4     5
     2     1         3     5
     5     3         3     5
     9     5         3     7
    12     6         3     5
     1     1         2    10
     8     4         2    10
    11     6         2    10
    15     7         2     5
     3     1         1    15
     4     2         1    20
     7     4         1    15
    10     6         1    15
    14     7         1     8
    16     8         1    20

16行が選択されました。

SQL> select count(*) 受注伝票数 from slip;

受注伝票数
----------
     8

SQL> select sum(qty) 受注数合計
  2  from account
  3  where goods_id = 2;

受注数合計
----------
    35

SQL> select goods_id 商品番号, sum(qty) 受注総数
  2  from account
  3  group by goods_id
  4  order by goods_id;

  商品番号   受注総数
---------- ----------
     1    93
     2    35
     3    22
     4    10

SQL> select cust_id 顧客番号, max(slip_date) 最新受注日付
  2  from slip
  3  group by cust_id
  4  order by cust_id;

  顧客番号 最新受注
---------- --------
     1 95-07-03
     2 95-07-03
     3 95-06-29
     4 95-06-23
     5 95-07-07

SQL> select goods_id 商品番号, sum(qty) 受注総数
  2  from account
  3  group by goods_id
  4  having sum(qty) >= 30;

  商品番号   受注総数
---------- ----------
     1    93
     2    35