Oracle PL/SQL/Analytical Functions/MEDIAN

Материал из SQL эксперт
Перейти к: навигация, поиск

Get median salary

   <source lang="sql">
   

SQL> SQL> create table emp

 2  ( empno      NUMBER(4)    constraint E_PK primary key
 3  , ename      VARCHAR2(8)
 4  , init       VARCHAR2(5)
 5  , job        VARCHAR2(8)
 6  , mgr        NUMBER(4)
 7  , bdate      DATE
 8  , sal        NUMBER(6,2)
 9  , comm       NUMBER(6,2)
10  , deptno     NUMBER(2)    default 10
11  ) ;

Table created. SQL> insert into emp values(1,"Tom","N", "Coder", 13,date "1965-12-17", 800 , NULL, 20); 1 row created. SQL> insert into emp values(2,"Jack","JAM", "Tester",6,date "1961-02-20", 1600, 300, 30); 1 row created. SQL> insert into emp values(3,"Wil","TF" , "Tester",6,date "1962-02-22", 1250, 500, 30); 1 row created. SQL> insert into emp values(4,"Jane","JM", "Designer", 9,date "1967-04-02", 2975, NULL, 20); 1 row created. SQL> insert into emp values(5,"Mary","P", "Tester",6,date "1956-09-28", 1250, 1400, 30); 1 row created. SQL> insert into emp values(6,"Black","R", "Designer", 9,date "1963-11-01", 2850, NULL, 30); 1 row created. SQL> insert into emp values(7,"Chris","AB", "Designer", 9,date "1965-06-09", 2450, NULL, 10); 1 row created. SQL> insert into emp values(8,"Smart","SCJ", "Coder", 4,date "1959-11-26", 3000, NULL, 20); 1 row created. SQL> insert into emp values(9,"Peter","CC", "Designer",NULL,date "1952-11-17", 5000, NULL, 10); 1 row created. SQL> insert into emp values(10,"Take","JJ", "Tester",6,date "1968-09-28", 1500, 0, 30); 1 row created. SQL> insert into emp values(11,"Ana","AA", "Coder", 8,date "1966-12-30", 1100, NULL, 20); 1 row created. SQL> insert into emp values(12,"Jane","R", "Manager", 6,date "1969-12-03", 800 , NULL, 30); 1 row created. SQL> insert into emp values(13,"Fake","MG", "Coder", 4,date "1959-02-13", 3000, NULL, 20); 1 row created. SQL> insert into emp values(14,"Mike","TJA","Manager", 7,date "1962-01-23", 1300, NULL, 10); 1 row created. SQL> SQL> select e.deptno

 2  ,      count(e.job)
 3  ,      sum(e.rum)
 4  ,      avg(e.sal)
 5  ,      median(e.sal)
 6  from   emp e
 7  group  by e.deptno;
   DEPTNO COUNT(E.JOB) SUM(E.ruM) AVG(E.SAL) MEDIAN(E.SAL)

------------ ----------- ---------- -------------
       10            3             2916.66667          2450
       20            5                   2175          2975
       30            6        2200 1541.66667          1375

SQL> SQL> SQL> drop table emp; Table dropped.



 </source>
   
  


MEDIAN(expr1): returns the median from a group of numbers

   <source lang="sql">

SQL> SQL> create table TestTable (

 2    x    number primary key,
 3    y    number
 4  );

Table created. SQL> insert into TestTable values (1, 7 ); 1 row created. SQL> insert into TestTable values (2, 1 ); 1 row created. SQL> insert into TestTable values (3, 2 ); 1 row created. SQL> insert into TestTable values (4, 5 ); 1 row created. SQL> insert into TestTable values (5, 7 ); 1 row created. SQL> insert into TestTable values (6, 34 ); 1 row created. SQL> insert into TestTable values (7, 32 ); 1 row created. SQL> insert into TestTable values (8, 43 ); 1 row created. SQL> insert into TestTable values (9, 87 ); 1 row created. SQL> SQL> select * from TestTable;

        X          Y

----------
        1          7
        2          1
        3          2
        4          5
        5          7
        6         34
        7         32
        8         43
        9         87

9 rows selected. SQL> SQL> SQL> SQL> -- MEDIAN(expr1): returns the median from a group of numbers. SQL> SQL> -- MEDIAN(expr1) SQL> SQL> SQL> SELECT MEDIAN(y) from TestTable;

MEDIAN(Y)

        7

SQL> SQL> SQL> drop table TestTable; Table dropped. SQL>


 </source>