oracle中如何根据作业对查询进行分组

how to group query base on job in oracle

我有一个包含以下字段和数据的 table。

我想根据工作栏获得结果 这是我想要的预期结果

SQL> create table emp
( empno      NUMBER(4)    constraint E_PK primary key
 , ename      VARCHAR2(8)
 , init       VARCHAR2(5)
 , job        VARCHAR2(8)
 , mgr        NUMBER(4)
 , bdate      DATE
 , sal        NUMBER(6,2)
 , comm       NUMBER(6,2)
, deptno     NUMBER(2)    default 10
  11  ) ;




 insert into emp values(1,'Tom','N',   'TRAINER', 13,date '1965-12-17',  800 , NULL,  20);

 insert into emp values(2,'Jack','JAM', 'Tester',6,date '1961-02-20',  1600, 300,   30);

 insert into emp values(3,'Wil','TF' ,  'Tester',6,date '1962-02-22',  1250, 500,   30);

 insert into emp values(4,'Jane','JM',  'Designer', 9,date '1967-04-02',  2975, NULL,  20);

 insert into emp values(5,'Mary','P',  'Tester',6,date '1956-09-28',  1250, 1400,  30);

 insert into emp values(6,'Black','R',   'Designer', 9,date '1963-11-01',  2850, NULL,  30);

 insert into emp values(7,'Chris','AB',  'Designer', 9,date '1965-06-09',  2450, NULL,  10);

 insert into emp values(8,'Smart','SCJ', 'TRAINER', 4,date '1959-11-26',  3000, NULL,  20);

 insert into emp values(9,'Peter','CC',   'Designer',NULL,date '1952-11-17',  5000, NULL,  10);

 insert into emp values(10,'Take','JJ', 'Tester',6,date '1968-09-28',  1500, 0,     30);

 insert into emp values(11,'Ana','AA',  'TRAINER', 8,date '1966-12-30',  1100, NULL,  20);

 insert into emp values(12,'Jane','R',   'Manager',   6,date '1969-12-03',  800 , NULL,  30);

 insert into emp values(13,'Fake','MG',   'TRAINER', 4,date '1959-02-13',  3000, NULL,  20);

 insert into emp values(14,'Mike','TJA','Manager',   7,date '1962-01-23',  1300, NULL,  10);

您可以使用 sqlplus 中的格式化功能来获得与您想要的非常相似的内容。

SQL> column job new_value jobvar noprint
SQL> ttitle left 'Job: ' jobvar skip 2
SQL> break on job skip page
SQL> btitle off
SQL> select * from emp order by job desc ;

演示

SQL> select * from emp ;

     EMPNO ENAME    INIT  JOB             MGR BDATE            SAL       COMM     DEPTNO
---------- -------- ----- -------- ---------- --------- ---------- ---------- ----------
         1 Tom      N     TRAINER          13 17-DEC-65        800                    20
         2 Jack     JAM   Tester            6 20-FEB-61       1600        300         30
         3 Wil      TF    Tester            6 22-FEB-62       1250        500         30
         4 Jane     JM    Designer          9 02-APR-67       2975                    20
         5 Mary     P     Tester            6 28-SEP-56       1250       1400         30
         6 Black    R     Designer          9 01-NOV-63       2850                    30
         7 Chris    AB    Designer          9 09-JUN-65       2450                    10
         8 Smart    SCJ   TRAINER           4 26-NOV-59       3000                    20
         9 Peter    CC    Designer            17-NOV-52       5000                    10
        10 Take     JJ    Tester            6 28-SEP-68       1500          0         30
        11 Ana      AA    TRAINER           8 30-DEC-66       1100                    20

     EMPNO ENAME    INIT  JOB             MGR BDATE            SAL       COMM     DEPTNO
---------- -------- ----- -------- ---------- --------- ---------- ---------- ----------
        12 Jane     R     Manager           6 03-DEC-69        800                    30
        13 Fake     MG    TRAINER           4 13-FEB-59       3000                    20
        14 Mike     TJA   Manager           7 23-JAN-62       1300                    10

SQL> column job new_value jobvar noprint
SQL> ttitle left 'Job: ' jobvar skip 2
SQL> break on job skip page
SQL> btitle off
SQL> select * from emp order by job desc ;

Job: Tester

     EMPNO ENAME    INIT         MGR BDATE            SAL       COMM     DEPTNO
---------- -------- ----- ---------- --------- ---------- ---------- ----------
         5 Mary     P              6 28-SEP-56       1250       1400         30
         3 Wil      TF             6 22-FEB-62       1250        500         30
         2 Jack     JAM            6 20-FEB-61       1600        300         30
        10 Take     JJ             6 28-SEP-68       1500          0         30

Job: TRAINER

     EMPNO ENAME    INIT         MGR BDATE            SAL       COMM     DEPTNO
---------- -------- ----- ---------- --------- ---------- ---------- ----------
         8 Smart    SCJ            4 26-NOV-59       3000                    20
         1 Tom      N             13 17-DEC-65        800                    20
        11 Ana      AA             8 30-DEC-66       1100                    20
        13 Fake     MG             4 13-FEB-59       3000                    20

Job: Manager

     EMPNO ENAME    INIT         MGR BDATE            SAL       COMM     DEPTNO
---------- -------- ----- ---------- --------- ---------- ---------- ----------
        14 Mike     TJA            7 23-JAN-62       1300                    10
        12 Jane     R              6 03-DEC-69        800                    30

Job: Designer

     EMPNO ENAME    INIT         MGR BDATE            SAL       COMM     DEPTNO
---------- -------- ----- ---------- --------- ---------- ---------- ----------
         9 Peter    CC               17-NOV-52       5000                    10
         6 Black    R              9 01-NOV-63       2850                    30
         4 Jane     JM             9 02-APR-67       2975                    20
         7 Chris    AB             9 09-JUN-65       2450                    10

14 rows selected.