This works, but is there a better solution?
select *
from quality_control_reset T
where date = (
select max(date)
from quality_control_reset
where qualitycontrolrange = T.qualitycontrolrange);
Julie Robinson wrote:
Given the two tables at the bottom of this email, I'm having trouble
coming up with a SQL statement that returns all rows in the
quality_control_reset table where there is only one row for the most
recent quality_control_range. Help?
Example:
In table quality_control_reset:
id | date | qualitycontrolrange
---------------------------------------------
1 | 02/23/2006 | 20
2 | 02/23/2006 | 6
3 | 02/28/2006 | 18
4 | 03/01/2006 | 18
5 | 03/23/2006 | 12
6 | 03/23/2006 | 20
I want the results of the following from the query:
id | date | qualitycontrolrange
---------------------------------------------
2 | 02/23/2006 | 6
4 | 03/01/2006 | 18
5 | 03/23/2006 | 12
6 | 03/23/2006 | 20
CREATE TABLE quality_control_reset
(
id int8 NOT NULL,
date timestamp,
qualitycontrolrange int8,
CONSTRAINT quality_control_reset_pkey PRIMARY KEY (id),
CONSTRAINT fk42a706efb62efa94 FOREIGN KEY (qualitycontrolrange)
REFERENCES quality_control_range (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
CREATE TABLE quality_control_range (
id int8 NOT NULL,
code varchar(255),
CONSTRAINT quality_control_range_pkey PRIMARY KEY (id)
);
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend