落書きノート

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

Oracle12c SQLで問題を解く

これはこれでまた頭使いますね。脳の違う部分が動いてる感じがします。

SQL> select * from account where account_id < 7;

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

6行が選択されました。

SQL> select * from account 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 account_id 受注明細番号
  2  from account
  3  where goods_id in (3,4);

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

6行が選択されました。

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 goods_id 商品番号, sum(qty) 受注総数
  2  from account
  3  group by goods_id
  4  having sum(qty) >= 30;

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

SQL> select losal, hisal, hisal - losal from salgrade;

     LOSAL  HISAL HISAL-LOSAL
---------- ---------- -----------
       700  1200        500
      1201  1400        199
      1401  2000        599
      2001  3000        999
      3001  9999       6998

SQL> select count(ename) 社員数,sum(sal) 給与総額 from emp;

    社員数   給与総額
---------- ----------
    14 29025

SQL> select ename,job,sal from emp where sal > 2900;

ENAME      JOB          SAL
---------- --------- ----------
JONES      MANAGER     2975
SCOTT      ANALYST     3000
KING       PRESIDENT       5000
FORD       ANALYST     3000