Showing posts with label postgres. Show all posts
Showing posts with label postgres. Show all posts
Monday, May 10, 2010
Need to find second highest salary from table
Ok..i know there are various methods to do this...but was looking for optimized query to find the second highest salary from say..employee table that has id, Name and Salary as fields! Can i do it in one query?? Help!!!
Thursday, April 15, 2010
Selecting from a sub-query
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
----+--------+--------+------------+-----------+--------
1 | Jason | 40420 | 1994-02-01 | New York | W
2 | Robert | 14420 | 1995-01-02 | Vancouver | N
3 | Celia | 24020 | 1996-12-03 | Toronto | W
4 | Linda | 40620 | 1997-11-04 | New York | N
5 | David | 80026 | 1998-10-05 | Vancouver | W
6 | James | 70060 | 1999-09-06 | Toronto | N
7 | Alison | 90620 | 2000-08-07 | New York | W
8 | Chris | 26020 | 2001-07-08 | Vancouver | N
9 | Mary | 60020 | 2002-06-09 | Toronto | W
(9 rows)
postgres=#
postgres=# -- Selecting from a sub-query
postgres=#
postgres=# SELECT 'test' AS test, id
postgres-# FROM (SELECT id FROM employee)
postgres-# AS example_sub_query;
test | id
------+----
test | 1
test | 2
test | 3
test | 4
test | 5
test | 6
test | 7
test | 8
test | 9
(9 rows)
postgres=#
postgres=# drop table employee;
DROP TABLE
postgres=#
postgres=#
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
----+--------+--------+------------+-----------+--------
1 | Jason | 40420 | 1994-02-01 | New York | W
2 | Robert | 14420 | 1995-01-02 | Vancouver | N
3 | Celia | 24020 | 1996-12-03 | Toronto | W
4 | Linda | 40620 | 1997-11-04 | New York | N
5 | David | 80026 | 1998-10-05 | Vancouver | W
6 | James | 70060 | 1999-09-06 | Toronto | N
7 | Alison | 90620 | 2000-08-07 | New York | W
8 | Chris | 26020 | 2001-07-08 | Vancouver | N
9 | Mary | 60020 | 2002-06-09 | Toronto | W
(9 rows)
postgres=#
postgres=# -- Selecting from a sub-query
postgres=#
postgres=# SELECT 'test' AS test, id
postgres-# FROM (SELECT id FROM employee)
postgres-# AS example_sub_query;
test | id
------+----
test | 1
test | 2
test | 3
test | 4
test | 5
test | 6
test | 7
test | 8
test | 9
(9 rows)
postgres=#
postgres=# drop table employee;
DROP TABLE
postgres=#
postgres=#
postgres=#
Labels:
postgres,
select,
Selecting from a sub-query,
sql,
subquery
A simple sub-query - subquery return one value
A simple sub-query: subquery return one value
postgres=#
postgres=# create table job(
postgres(# ID int,
postgres(# title varchar (10));
CREATE TABLE
postgres=#
postgres=#
postgres=# insert into job(ID, title) values(1,'Developer');
INSERT 0 1
postgres=# insert into job(ID, title) values(2,'Tester');
INSERT 0 1
postgres=# insert into job(ID, title) values(3,'Designer');
INSERT 0 1
postgres=# insert into job(ID, title) values(4,'Programmer');
INSERT 0 1
postgres=#
postgres=# select * from job;
id | title
----+------------
1 | Developer
2 | Tester
3 | Designer
4 | Programmer
(4 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
----+--------+--------+------------+-----------+--------
1 | Jason | 40420 | 1994-02-01 | New York | W
2 | Robert | 14420 | 1995-01-02 | Vancouver | N
3 | Celia | 24020 | 1996-12-03 | Toronto | W
4 | Linda | 40620 | 1997-11-04 | New York | N
5 | David | 80026 | 1998-10-05 | Vancouver | W
6 | James | 70060 | 1999-09-06 | Toronto | N
7 | Alison | 90620 | 2000-08-07 | New York | W
8 | Chris | 26020 | 2001-07-08 | Vancouver | N
9 | Mary | 60020 | 2002-06-09 | Toronto | W
(9 rows)
postgres=#
postgres=#
postgres=# -- A simple sub-query
postgres=#
postgres=# SELECT name FROM employee WHERE id = (SELECT id FROM job where title = 'Developer');
name
-------
Jason
(1 row)
postgres=#
postgres=#
postgres=# drop table employee;
DROP TABLE
postgres=# drop table job;
DROP TABLE
postgres=#
postgres=#
postgres=#
postgres=# create table job(
postgres(# ID int,
postgres(# title varchar (10));
CREATE TABLE
postgres=#
postgres=#
postgres=# insert into job(ID, title) values(1,'Developer');
INSERT 0 1
postgres=# insert into job(ID, title) values(2,'Tester');
INSERT 0 1
postgres=# insert into job(ID, title) values(3,'Designer');
INSERT 0 1
postgres=# insert into job(ID, title) values(4,'Programmer');
INSERT 0 1
postgres=#
postgres=# select * from job;
id | title
----+------------
1 | Developer
2 | Tester
3 | Designer
4 | Programmer
(4 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
----+--------+--------+------------+-----------+--------
1 | Jason | 40420 | 1994-02-01 | New York | W
2 | Robert | 14420 | 1995-01-02 | Vancouver | N
3 | Celia | 24020 | 1996-12-03 | Toronto | W
4 | Linda | 40620 | 1997-11-04 | New York | N
5 | David | 80026 | 1998-10-05 | Vancouver | W
6 | James | 70060 | 1999-09-06 | Toronto | N
7 | Alison | 90620 | 2000-08-07 | New York | W
8 | Chris | 26020 | 2001-07-08 | Vancouver | N
9 | Mary | 60020 | 2002-06-09 | Toronto | W
(9 rows)
postgres=#
postgres=#
postgres=# -- A simple sub-query
postgres=#
postgres=# SELECT name FROM employee WHERE id = (SELECT id FROM job where title = 'Developer');
name
-------
Jason
(1 row)
postgres=#
postgres=#
postgres=# drop table employee;
DROP TABLE
postgres=# drop table job;
DROP TABLE
postgres=#
postgres=#
Labels:
postgres,
select,
sql,
subquery,
subquery return one value