Using HAVING with an Analytical Function : HAVING « Select Query « Oracle PL / SQL

Oracle PL / SQL
1. Aggregate Functions
2. Analytical Functions
3. Char Functions
4. Constraints
5. Cursor
6. Data Type
7. Date Timezone
8. Hierarchical Query
9. Index
10. Insert Delete Update
11. Numeric Math Functions
12. Object Oriented Database
13. PL SQL
14. Regular Expressions
15. Report Column Page
16. Result Set
17. Select Query
18. Sequence
19. SQLPlus
20. Store Procedure Function
21. Subquery
22. System Tables
23. Table
24. Table Joins
25. Trigger
26. User Previliege
27. View
28. XML
Microsoft Office Word 2007 Tutorial
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
PHP
Python
SQL Server / T-SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Oracle PL / SQL » Select Query » HAVING 
Using HAVING with an Analytical Function


SQL>
SQL> -- create demo table
SQL> create table Employee(
  2    empno              Number(3)  NOT NULL, -- Employee ID
  3    ename              VARCHAR2(10 BYTE),   -- Employee Name
  4    hireDate          DATE,                -- Date Employee Hired
  5    orig_salary        Number(8,2),         -- Orignal Salary
  6    curr_salary        Number(8,2),         -- Current Salary
  7    region             VARCHAR2(BYTE)     -- Region where employeed
  8  )
  9  /

Table created.

SQL>
SQL> create table job(
  2    empno              Number(3)  NOT NULL, -- Employee ID
  3    jobtitle           VARCHAR2(10 BYTE)    -- Employee job title
  4  )
  5  /

Table created.

SQL> -- prepare data for employee table
SQL> insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)
  2                values(122,'Alison',to_date('19960321','YYYYMMDD'), 45000,       48000,       'E')
  3  /

row created.

SQL> insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)
  2                values(123'James',to_date('19781212','YYYYMMDD'), 23000,       32000,       'W')
  3  /

row created.

SQL> insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)
  2                values(104,'Celia',to_date('19821024','YYYYMMDD'), 53000,       58000,        'E')
  3  /

row created.

SQL> insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)
  2                values(105,'Robert',to_date('19840115','YYYYMMDD'), 31000,      36000,        'W')
  3  /

row created.

SQL> insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)
  2                values(116,'Linda', to_date('19870730','YYYYMMDD'), 43000,       53000,       'E')
  3  /

row created.

SQL> insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)
  2                values(117,'David', to_date('19901231','YYYYMMDD'), 78000,       85000,       'W')
  3  /

row created.

SQL> insert into Employee(empno,  ename,  hireDate,                       orig_salary, curr_salary, region)
  2                values(108,'Jode',  to_date('19960917','YYYYMMDD'), 21000,       29000,       'E')
  3  /

row created.

SQL>
SQL> -- prepare data for job table
SQL>
SQL> insert into job(empno, jobtitle)
  2           values(101,   'Painter');

row created.

SQL>
SQL> insert into job(empno, jobtitle)
  2           values(122,   'Tester');

row created.

SQL>
SQL> insert into job(empno, jobtitle)
  2           values(123,   'Dediator');

row created.

SQL>
SQL> insert into job(empno, jobtitle)
  2           values(104,   'Chemist');

row created.

SQL>
SQL> insert into job(empno, jobtitle)
  2           values(105,   'Accountant');

row created.

SQL>
SQL> insert into job(empno, jobtitle)
  2           values(116,   'Manager');

row created.

SQL>
SQL> insert into job(empno, jobtitle)
  2           values(117,   'Programmer');

row created.

SQL>
SQL> insert into job(empno, jobtitle)
  2           values(108,   'Developer');

row created.

SQL>
SQL>
SQL> -- display data in the table
SQL> select from Employee
  2  /
Hit a key to continue

     EMPNO ENAME      HIREDATE  ORIG_SALARY CURR_SALARY R
---------- ---------- --------- ----------- ----------- -
       122 Alison     21-MAR-96       45000       48000 E
       123 James      12-DEC-78       23000       32000 W
       104 Celia      24-OCT-82       53000       58000 E
       105 Robert     15-JAN-84       31000       36000 W
       116 Linda      30-JUL-87       43000       53000 E
       117 David      31-DEC-90       78000       85000 W
       108 Jode       17-SEP-96       21000       29000 E

rows selected.

SQL> select from job;
Hit a key to continue

     EMPNO JOBTITLE
---------- ----------
       101 Painter
       122 Tester
       123 Dediator
       104 Chemist
       105 Accountant
       116 Manager
       117 Programmer
       108 Developer

rows selected.

SQL>
SQL>
SQL> -- Using HAVING with an Analytical Function
SQL>
SQL> -- if a HAVING clause is added, it will have its effect just before the RANK.
SQL>
SQL> SELECT j.jobtitle, COUNT(*), MAX(orig_salarymaxsalary,
  2    MIN(orig_salaryminsalary
  3    --   RANK() OVER(ORDER BY MAX(orig_salary)) rankorder
  4  FROM employee e, job j
  5  WHERE e.orig_salary < 43000
  6    AND e.empno = j.empno
  7  GROUP BY j.jobtitle
  8  HAVING MAX(orig_salary34000
  9  ORDER BY j.jobtitle desc;

no rows selected

SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> drop table job;

Table dropped.

SQL>
SQL> -- clean the table
SQL> drop table Employee;

Table dropped.

SQL>
SQL>
SQL>

           
       
Related examples in the same category
1. Example using the MAX function with having clause
2. Using the HAVING Clause
3. Any conditions based on the outcome of a group function must be in the HAVING clause
4. Using the SUM function in HAVING Clause
5. Sub query inside having clause
6. Subqueries in a HAVING Clause: Uses a subquery in the HAVING clause of the outer query
w_w_w_.___ja__v_a__2s__.__c_o___m_ | Contact Us
Copyright 2003 - 08 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.