Can this be done in one query?

Started by Randall Perryalmost 24 years ago6 messagesgeneral
Jump to latest
#1Randall Perry
rgp@systame.com

With the following:

select max(date) from log order by date_time desc limit 12;

The limit clause has no effect on the results; it'll get the latest date
from the entire record set rather than from the last 12 records.

It works if I do this:
create temp table as select date from log order by dat_time desc limit
12;

select max(date) from temp;

So, is there a way to do this in one query without creating a temp table?

--
Randy Perry
sysTame
Mac Consulting/Sales

phn 772.589.6449
mobile email help@systame.com

#2Bjoern Metzdorf
bm@turtle-entertainment.de
In reply to: Randall Perry (#1)
Re: Can this be done in one query?

So, is there a way to do this in one query without creating a temp table?

How about a view:

create view test as select max(date) from log order by date_time desc limit
12;

select max(date) from test;

Greetings,
Bjoern

#3Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Randall Perry (#1)
Re: Can this be done in one query?

On Tue, 7 May 2002, Randall Perry wrote:

With the following:

select max(date) from log order by date_time desc limit 12;

The limit clause has no effect on the results; it'll get the latest date
from the entire record set rather than from the last 12 records.

Maybe something like:
select max(date) from (select date from log order by date_time desc limit
12) c;

#4Jean-Luc Lachance
jllachan@nsd.ca
In reply to: Stephan Szabo (#3)
Re: Can this be done in one query?

Or maybe if date_time is of type timestamp:

select date( select date_time from log order by date_time desc limit 1);

JLL

Stephan Szabo wrote:

Show quoted text

On Tue, 7 May 2002, Randall Perry wrote:

With the following:

select max(date) from log order by date_time desc limit 12;

The limit clause has no effect on the results; it'll get the latest date
from the entire record set rather than from the last 12 records.

Maybe something like:
select max(date) from (select date from log order by date_time desc limit
12) c;

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

#5Randall Perry
rgp@systame.com
In reply to: Stephan Szabo (#3)
Re: Can this be done in one query?

Thanks, that's the best solution.

But I don't get the syntax; what's the 'c' at the end -- an alias?

On Tue, 7 May 2002, Randall Perry wrote:

With the following:

select max(date) from log order by date_time desc limit 12;

The limit clause has no effect on the results; it'll get the latest date
from the entire record set rather than from the last 12 records.

Maybe something like:
select max(date) from (select date from log order by date_time desc limit
12) c;

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

--
Randy Perry
sysTame
Mac Consulting/Sales

phn 772.589.6449
mobile email help@systame.com

#6Randall Perry
rgp@systame.com
In reply to: Stephan Szabo (#3)
Re: Can this be done in one query?

On Tue, 7 May 2002, Randall Perry wrote:

With the following:

select max(date) from log order by date_time desc limit 12;

The limit clause has no effect on the results; it'll get the latest date
from the entire record set rather than from the last 12 records.

Maybe something like:
select max(date) from (select date from log order by date_time desc limit
12) c;

Thanks, that did it.

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

--
Randy Perry
sysTame
Mac Consulting/Sales

phn 772.589.6449
mobile email help@systame.com