1. Get rid of all advertisements and get unlimited access to documents by upgrading to Premium Membership. Upgrade to Premium Now and also get a Premium Badge!

How to Sort Mutiple times in Oracle 8i

Discussion in 'SQL PL/SQL' started by Jk123, Oct 12, 2012.

  1. Jk123

    Jk123 Guest

    Hi ,

    I am using Oracle 8i, i am having table which has the columns 1.Shipping Bill No 2. Shipping Bill Date, 3.Party Name, 4. Weight in Metric Ton 5. Vessel Name. My problem is i want to show records in which the party who have shipped more weight should come first , i.e, if the overall sum of weight of all shipments for particular party is huge then all the shipment details of that party should come first and next set of result should consist all shipment details of another party who is in second position in weight wise and so on please suggest me how to achieve this ....
     
  2. zargon

    zargon Community Moderator Forum Guru

    Messages:
    2,347
    Likes Received:
    348
    Trophy Points:
    1,430
    Location:
    Aurora, CO
    You're using Oracle 8i which is an antique in terms of database releases. Second, you give us no details on the data -- I can only presume that since there is a Vessel name this value is the weight per container. I can concoct an example which may or may not be suitable based on your actual data; of course this won't be a simple SQL solution as, again, you're using 8i:

    Code (SQL):
    SQL> CREATE TABLE shipments(
      2          ship_bill_no    NUMBER NOT NULL,
      3          ship_bill_dt    DATE,
      4          ship_party      varchar2(40),
      5          container_wt    NUMBER,
      6          container       varchar2(40),
      7          CONSTRAINT ship_pk PRIMARY KEY (ship_bill_no)
      8  );
     
    TABLE created.
     
    SQL>
    SQL> BEGIN
      2          FOR i IN 1..100 loop
      3                  INSERT INTO shipments(ship_bill_no, ship_bill_dt, ship_party, container_wt, container)
      4                  VALUES (i, sysdate+i, 'Party '||MOD(i,78), i*100, 'Container '||i);
      5          END loop;
      6
      7          commit;
      8
      9  END;
     10  /
     
    PL/SQL PROCEDURE successfully completed.
     
    SQL>
    SQL> DECLARE
      2          cursor get_most_shipped IS
      3          SELECT ship_party, SUM(container_wt) cont_wt
      4          FROM shipments
      5          GROUP BY ship_party
      6          ORDER BY 2 DESC;
      7
      8          cursor get_ship_data (v_name IN varchar2) IS
      9          SELECT
     10          ship_bill_no bno,
     11          ship_bill_dt bdt,
     12          ship_party pty,
     13          container_wt cwt,
     14          container ct
     15          FROM shipments
     16          WHERE ship_party = v_name
     17          ORDER BY 1,2,3,4,5;
     18
     19  BEGIN
     20          FOR p IN get_most_shipped loop
     21                  FOR d IN get_ship_data(p.ship_party) loop
     22                          dbms_output.put_line(d.bno||'   '||d.bdt||'     '||d.pty||'     '||d.cwt||'     '||d.ct);
     23                  END loop;
     24          END loop;
     25
     26  END;
     27  /
    22      03-NOV-12       Party 22        2200    Container 22
    100     20-JAN-13       Party 22        10000   Container 100
    21      02-NOV-12       Party 21        2100    Container 21
    99      19-JAN-13       Party 21        9900    Container 99
    20      01-NOV-12       Party 20        2000    Container 20
    98      18-JAN-13       Party 20        9800    Container 98
    19      31-OCT-12       Party 19        1900    Container 19
    97      17-JAN-13       Party 19        9700    Container 97
    18      30-OCT-12       Party 18        1800    Container 18
    96      16-JAN-13       Party 18        9600    Container 96
    17      29-OCT-12       Party 17        1700    Container 17
    95      15-JAN-13       Party 17        9500    Container 95
    16      28-OCT-12       Party 16        1600    Container 16
    94      14-JAN-13       Party 16        9400    Container 94
    15      27-OCT-12       Party 15        1500    Container 15
    93      13-JAN-13       Party 15        9300    Container 93
    14      26-OCT-12       Party 14        1400    Container 14
    92      12-JAN-13       Party 14        9200    Container 92
    13      25-OCT-12       Party 13        1300    Container 13
    91      11-JAN-13       Party 13        9100    Container 91
    12      24-OCT-12       Party 12        1200    Container 12
    90      10-JAN-13       Party 12        9000    Container 90
    11      23-OCT-12       Party 11        1100    Container 11
    89      09-JAN-13       Party 11        8900    Container 89
    10      22-OCT-12       Party 10        1000    Container 10
    88      08-JAN-13       Party 10        8800    Container 88
    9       21-OCT-12       Party 9 900     Container 9
    87      07-JAN-13       Party 9 8700    Container 87
    8       20-OCT-12       Party 8 800     Container 8
    86      06-JAN-13       Party 8 8600    Container 86
    7       19-OCT-12       Party 7 700     Container 7
    85      05-JAN-13       Party 7 8500    Container 85
    6       18-OCT-12       Party 6 600     Container 6
    84      04-JAN-13       Party 6 8400    Container 84
    5       17-OCT-12       Party 5 500     Container 5
    83      03-JAN-13       Party 5 8300    Container 83
    4       16-OCT-12       Party 4 400     Container 4
    82      02-JAN-13       Party 4 8200    Container 82
    3       15-OCT-12       Party 3 300     Container 3
    81      01-JAN-13       Party 3 8100    Container 81
    2       14-OCT-12       Party 2 200     Container 2
    80      31-DEC-12       Party 2 8000    Container 80
    1       13-OCT-12       Party 1 100     Container 1
    79      30-DEC-12       Party 1 7900    Container 79
    78      29-DEC-12       Party 0 7800    Container 78
    77      28-DEC-12       Party 77        7700    Container 77
    76      27-DEC-12       Party 76        7600    Container 76
    75      26-DEC-12       Party 75        7500    Container 75
    74      25-DEC-12       Party 74        7400    Container 74
    73      24-DEC-12       Party 73        7300    Container 73
    72      23-DEC-12       Party 72        7200    Container 72
    71      22-DEC-12       Party 71        7100    Container 71
    70      21-DEC-12       Party 70        7000    Container 70
    69      20-DEC-12       Party 69        6900    Container 69
    68      19-DEC-12       Party 68        6800    Container 68
    67      18-DEC-12       Party 67        6700    Container 67
    66      17-DEC-12       Party 66        6600    Container 66
    65      16-DEC-12       Party 65        6500    Container 65
    64      15-DEC-12       Party 64        6400    Container 64
    63      14-DEC-12       Party 63        6300    Container 63
    62      13-DEC-12       Party 62        6200    Container 62
    61      12-DEC-12       Party 61        6100    Container 61
    60      11-DEC-12       Party 60        6000    Container 60
    59      10-DEC-12       Party 59        5900    Container 59
    58      09-DEC-12       Party 58        5800    Container 58
    57      08-DEC-12       Party 57        5700    Container 57
    56      07-DEC-12       Party 56        5600    Container 56
    55      06-DEC-12       Party 55        5500    Container 55
    54      05-DEC-12       Party 54        5400    Container 54
    53      04-DEC-12       Party 53        5300    Container 53
    52      03-DEC-12       Party 52        5200    Container 52
    51      02-DEC-12       Party 51        5100    Container 51
    50      01-DEC-12       Party 50        5000    Container 50
    49      30-NOV-12       Party 49        4900    Container 49
    48      29-NOV-12       Party 48        4800    Container 48
    47      28-NOV-12       Party 47        4700    Container 47
    46      27-NOV-12       Party 46        4600    Container 46
    45      26-NOV-12       Party 45        4500    Container 45
    44      25-NOV-12       Party 44        4400    Container 44
    43      24-NOV-12       Party 43        4300    Container 43
    42      23-NOV-12       Party 42        4200    Container 42
    41      22-NOV-12       Party 41        4100    Container 41
    40      21-NOV-12       Party 40        4000    Container 40
    39      20-NOV-12       Party 39        3900    Container 39
    38      19-NOV-12       Party 38        3800    Container 38
    37      18-NOV-12       Party 37        3700    Container 37
    36      17-NOV-12       Party 36        3600    Container 36
    35      16-NOV-12       Party 35        3500    Container 35
    34      15-NOV-12       Party 34        3400    Container 34
    33      14-NOV-12       Party 33        3300    Container 33
    32      13-NOV-12       Party 32        3200    Container 32
    31      12-NOV-12       Party 31        3100    Container 31
    30      11-NOV-12       Party 30        3000    Container 30
    29      10-NOV-12       Party 29        2900    Container 29
    28      09-NOV-12       Party 28        2800    Container 28
    27      08-NOV-12       Party 27        2700    Container 27
    26      07-NOV-12       Party 26        2600    Container 26
    25      06-NOV-12       Party 25        2500    Container 25
    24      05-NOV-12       Party 24        2400    Container 24
    23      04-NOV-12       Party 23        2300    Container 23
     
    PL/SQL PROCEDURE successfully completed.
     
    SQL>
    With a later release of Oracle you could do this:

    Code (SQL):
    SQL> break ON ship_party skip 1
    SQL>
    SQL> SELECT ship_bill_no,
      2          ship_bill_dt,
      3          ship_party,
      4          container_wt,
      5          container,
      6          SUM(container_wt) OVER (partition BY ship_party ORDER BY ship_party) ttl_wt
      7  FROM shipments
      8  ORDER BY ttl_wt DESC;
     
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              22 03-NOV-12 Party 22                                         2200 Container 22                          12200
             100 20-JAN-13                                                 10000 Container 100                         12200
              99 19-JAN-13 Party 21                                         9900 Container 99                          12000
              21 02-NOV-12                                                  2100 Container 21                          12000
              20 01-NOV-12 Party 20                                         2000 Container 20                          11800
              98 18-JAN-13                                                  9800 Container 98                          11800
              19 31-OCT-12 Party 19                                         1900 Container 19                          11600
              97 17-JAN-13                                                  9700 Container 97                          11600
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              18 30-OCT-12 Party 18                                         1800 Container 18                          11400
              96 16-JAN-13                                                  9600 Container 96                          11400
              95 15-JAN-13 Party 17                                         9500 Container 95                          11200
              17 29-OCT-12                                                  1700 Container 17                          11200
              94 14-JAN-13 Party 16                                         9400 Container 94                          11000
              16 28-OCT-12                                                  1600 Container 16                          11000
              93 13-JAN-13 Party 15                                         9300 Container 93                          10800
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              15 27-OCT-12 Party 15                                         1500 Container 15                          10800
              14 26-OCT-12 Party 14                                         1400 Container 14                          10600
              92 12-JAN-13                                                  9200 Container 92                          10600
              13 25-OCT-12 Party 13                                         1300 Container 13                          10400
              91 11-JAN-13                                                  9100 Container 91                          10400
              90 10-JAN-13 Party 12                                         9000 Container 90                          10200
              12 24-OCT-12                                                  1200 Container 12                          10200

    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              89 09-JAN-13 Party 11                                         8900 Container 89                          10000
              11 23-OCT-12                                                  1100 Container 11                          10000
              10 22-OCT-12 Party 10                                         1000 Container 10                           9800
              88 08-JAN-13                                                  8800 Container 88                           9800
               9 21-OCT-12 Party 9                                           900 Container 9                            9600
              87 07-JAN-13                                                  8700 Container 87                           9600
              86 06-JAN-13 Party 8                                          8600 Container 86                           9400
               8 20-OCT-12                                                   800 Container 8                            9400
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
               7 19-OCT-12 Party 7                                           700 Container 7                            9200
              85 05-JAN-13                                                  8500 Container 85                           9200
               6 18-OCT-12 Party 6                                           600 Container 6                            9000
              84 04-JAN-13                                                  8400 Container 84                           9000
              83 03-JAN-13 Party 5                                          8300 Container 83                           8800
               5 17-OCT-12                                                   500 Container 5                            8800
               4 16-OCT-12 Party 4                                           400 Container 4                            8600
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              82 02-JAN-13 Party 4                                          8200 Container 82                           8600
              81 01-JAN-13 Party 3                                          8100 Container 81                           8400
               3 15-OCT-12                                                   300 Container 3                            8400
              80 31-DEC-12 Party 2                                          8000 Container 80                           8200
               2 14-OCT-12                                                   200 Container 2                            8200
               1 13-OCT-12 Party 1                                           100 Container 1                            8000
              79 30-DEC-12                                                  7900 Container 79                           8000

    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              78 29-DEC-12 Party 0                                          7800 Container 78                           7800
              77 28-DEC-12 Party 77                                         7700 Container 77                           7700
              76 27-DEC-12 Party 76                                         7600 Container 76                           7600
              75 26-DEC-12 Party 75                                         7500 Container 75                           7500
              74 25-DEC-12 Party 74                                         7400 Container 74                           7400
              73 24-DEC-12 Party 73                                         7300 Container 73                           7300
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              72 23-DEC-12 Party 72                                         7200 Container 72                           7200
              71 22-DEC-12 Party 71                                         7100 Container 71                           7100
              70 21-DEC-12 Party 70                                         7000 Container 70                           7000
              69 20-DEC-12 Party 69                                         6900 Container 69                           6900
              68 19-DEC-12 Party 68                                         6800 Container 68                           6800

    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              67 18-DEC-12 Party 67                                         6700 Container 67                           6700
              66 17-DEC-12 Party 66                                         6600 Container 66                           6600
              65 16-DEC-12 Party 65                                         6500 Container 65                           6500
              64 15-DEC-12 Party 64                                         6400 Container 64                           6400
              63 14-DEC-12 Party 63                                         6300 Container 63                           6300
              62 13-DEC-12 Party 62                                         6200 Container 62                           6200
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              61 12-DEC-12 Party 61                                         6100 Container 61                           6100
              60 11-DEC-12 Party 60                                         6000 Container 60                           6000
              59 10-DEC-12 Party 59                                         5900 Container 59                           5900
              58 09-DEC-12 Party 58                                         5800 Container 58                           5800
              57 08-DEC-12 Party 57                                         5700 Container 57                           5700

    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              56 07-DEC-12 Party 56                                         5600 Container 56                           5600
              55 06-DEC-12 Party 55                                         5500 Container 55                           5500
              54 05-DEC-12 Party 54                                         5400 Container 54                           5400
              53 04-DEC-12 Party 53                                         5300 Container 53                           5300
              52 03-DEC-12 Party 52                                         5200 Container 52                           5200
              51 02-DEC-12 Party 51                                         5100 Container 51                           5100
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              50 01-DEC-12 Party 50                                         5000 Container 50                           5000
              49 30-NOV-12 Party 49                                         4900 Container 49                           4900
              48 29-NOV-12 Party 48                                         4800 Container 48                           4800
              47 28-NOV-12 Party 47                                         4700 Container 47                           4700
              46 27-NOV-12 Party 46                                         4600 Container 46                           4600

    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              45 26-NOV-12 Party 45                                         4500 Container 45                           4500
              44 25-NOV-12 Party 44                                         4400 Container 44                           4400
              43 24-NOV-12 Party 43                                         4300 Container 43                           4300
              42 23-NOV-12 Party 42                                         4200 Container 42                           4200
              41 22-NOV-12 Party 41                                         4100 Container 41                           4100
              40 21-NOV-12 Party 40                                         4000 Container 40                           4000
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              39 20-NOV-12 Party 39                                         3900 Container 39                           3900
              38 19-NOV-12 Party 38                                         3800 Container 38                           3800
              37 18-NOV-12 Party 37                                         3700 Container 37                           3700
              36 17-NOV-12 Party 36                                         3600 Container 36                           3600
              35 16-NOV-12 Party 35                                         3500 Container 35                           3500

    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              34 15-NOV-12 Party 34                                         3400 Container 34                           3400
              33 14-NOV-12 Party 33                                         3300 Container 33                           3300
              32 13-NOV-12 Party 32                                         3200 Container 32                           3200
              31 12-NOV-12 Party 31                                         3100 Container 31                           3100
              30 11-NOV-12 Party 30                                         3000 Container 30                           3000
              29 10-NOV-12 Party 29                                         2900 Container 29                           2900
    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              28 09-NOV-12 Party 28                                         2800 Container 28                           2800
              27 08-NOV-12 Party 27                                         2700 Container 27                           2700
              26 07-NOV-12 Party 26                                         2600 Container 26                           2600
              25 06-NOV-12 Party 25                                         2500 Container 25                           2500
              24 05-NOV-12 Party 24                                         2400 Container 24                           2400

    SHIP_BILL_NO SHIP_BILL SHIP_PARTY                               CONTAINER_WT CONTAINER                            TTL_WT
    ------------ --------- ---------------------------------------- ------------ ---------------------------------------- ----------
              23 04-NOV-12 Party 23                                         2300 Container 23                           2300

     
    100 ROWS selected.
     
    SQL>
    You are seriously handicapped with Oracle 8i.