Using case expressions with sub-queries : Subquery Case « Subquery « PostgreSQL

Home
PostgreSQL
1.Aggregate Functions
2.Analytical Functions
3.Array
4.Constraints
5.Cursor
6.Data Type
7.Database
8.Date Timezone
9.Index
10.Inheritance
11.Insert Delete Update
12.Math Functions
13.Postgre SQL
14.Select Query
15.Sequence
16.Store Procedure Function
17.String Functions
18.Subquery
19.Table
20.Table Joins
21.Transaction
22.User Previliege
23.View
PostgreSQL » Subquery » Subquery Case 
Using case expressions with sub-queries


postgres=#
postgres=#
postgres=# create table job(
postgres(#     ID          int,
postgres(#     title       varchar (10));
CREATE TABLE
postgres=#
postgres=#
postgres=# insert into job(ID, titlevalues(1,'Developer');
INSERT 0 1
postgres=# insert into job(ID, titlevalues(2,'Tester');
INSERT 0 1
postgres=# insert into job(ID, titlevalues(3,'Designer');
INSERT 0 1
postgres=# insert into job(ID, titlevalues(4,'Programmer');
INSERT 0 1
postgres=#
postgres=# select from job;
 id |   title
----+------------
  | Developer
  | Tester
  | Designer
  | Programmer
(rows)

postgres=#
postgres=# CREATE TABLE employee (
postgres(#     ID         int,
postgres(#     name       varchar(10),
postgres(#     salary     real,
postgres(#     start_date date,
postgres(#     city       varchar(10),
postgres(#     region     char(1)
postgres();
CREATE TABLE
postgres=#
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (1,  'Jason', 40420,  '02/01/94', 'New York', 'W');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (2,  'Robert',14420,  '01/02/95', 'Vancouver','N');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (3,  'Celia', 24020,  '12/03/96', 'Toronto',  'W');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (4,  'Linda', 40620,  '11/04/97', 'New York', 'N');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (5,  'David', 80026,  '10/05/98', 'Vancouver','W');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (6,  'James', 70060,  '09/06/99', 'Toronto',  'N');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (7,  'Alison',90620,  '08/07/00', 'New York', 'W');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (8,  'Chris', 26020,  '07/08/01', 'Vancouver','N');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (9,  'Mary',  60020,  '06/09/02', 'Toronto',  'W');
INSERT 0 1
postgres=#
postgres=# select from employee;
 id |  name  | salary | start_date |   city    | region
----+--------+--------+------------+-----------+--------
  | Jason  |  40420 1994-02-01 | New York  | W
  | Robert |  14420 1995-01-02 | Vancouver | N
  | Celia  |  24020 1996-12-03 | Toronto   | W
  | Linda  |  40620 1997-11-04 | New York  | N
  | David  |  80026 1998-10-05 | Vancouver | W
  | James  |  70060 1999-09-06 | Toronto   | N
  | Alison |  90620 2000-08-07 | New York  | W
  | Chris  |  26020 2001-07-08 | Vancouver | N
  | Mary   |  60020 2002-06-09 | Toronto   | W
(rows)

postgres=#
postgres=# --Using case expressions with sub-queries
postgres=#
postgres=# SELECT salary,
postgres-#         CASE WHEN salary > 2000 THEN 'N/A - (Out of price range)'
postgres-#              ELSE (SELECT title FROM employee e JOIN job j
postgres(#                                      ON (e.id = j.id)
postgres(#                                 WHERE j.title = 'developer')
postgres-#         END AS cost_range
postgres-#         FROM employee
postgres-#         ORDER BY salary ASC
postgres-#         LIMIT 8;
 salary |         cost_range
--------+----------------------------
  14420 | N/A - (Out of price range)
  24020 | N/A - (Out of price range)
  26020 | N/A - (Out of price range)
  40420 | N/A - (Out of price range)
  40620 | N/A - (Out of price range)
  60020 | N/A - (Out of price range)
  70060 | N/A - (Out of price range)
  80026 | N/A - (Out of price range)
(rows)

postgres=#
postgres=# drop table job;
DROP TABLE
postgres=# drop table employee;
DROP TABLE
postgres=#
           
       
Related examples in the same category
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.