help on SQL

Lists: pgsql-interfaces
From: Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: help on SQL
Date: 2004-04-21 07:07:07
Message-ID: 40861D9B.10403@hq.ntsp.nec.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces


hello everyone,

is it possible to get every other row in the table?
like for example:
data
-----
1
2
3
4
5
6
7

Is it possible to have this result (interval of 3)?

result
------
1
4
7

thanks,
kenneth

--


From: Gergely Czuczy <phoemix(at)harmless(dot)hu>
To: Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>
Cc: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: help on SQL
Date: 2004-04-21 07:09:26
Message-ID: Pine.LNX.4.44.0404210907250.28604-100000@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

On Wed, 21 Apr 2004, Kenneth Suralta wrote:

>
> hello everyone,
>
> is it possible to get every other row in the table?
> like for example:
> data
> -----
> 1
> 2
> 3
> 4
> 5
> 6
> 7
SELECT t.fields FROM table t WHERE data NOT IN (SELECT t2.data FROM table
t2 WHERE some_whereclause);

it will select these rows which ones are not in the subquery. but you can
do it simply by getting the negate of the whereclause...
>
> Is it possible to have this result (interval of 3)?
>
> result
> ------
> 1
> 4
> 7
i don't see what you mean. please describe it.
>
> thanks,
> kenneth
>
> --
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

Bye,

Gergely Czuczy
mailto: phoemix(at)harmless(dot)hu
PGP: http://phoemix.harmless.hu/phoemix.pgp

"Wish a god, a star, to believe in,
With the realm of king of fantasy..."


From: Gergely Czuczy <phoemix(at)harmless(dot)hu>
To: Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>
Cc: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: help on SQL
Date: 2004-04-21 07:42:31
Message-ID: Pine.LNX.4.44.0404210941480.16994-100000@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

ahh, i see, you need every Nth result from the given query.
I think there is no way for this, but getting all the result and dropping
from the client every not-Nthm but i may be wrong

On Wed, 21 Apr 2004, Kenneth Suralta wrote:

> hi gergely,
>
> thanks for replying..
> what i mean is supposing there is a table with the following rows:
>
> data
> -----
> 1
> 2
> 3
> 4
> 5
> 6
> 7
>
> is it possible to get every other N-row in the table?
> example, if N is 3.
> data
> -----
> 1
> 4
> 7
>
> thanks,
> kenneth
>
>
>
> Gergely Czuczy wrote:
>
> On Wed, 21 Apr 2004, Kenneth Suralta wrote:
>
>
>
> hello everyone,
>
> is it possible to get every other row in the table?
> like for example:
> data
> -----
> 1
> 2
> 3
> 4
> 5
> 6
> 7
>
>
> SELECT t.fields FROM table t WHERE data NOT IN (SELECT t2.data FROM table
> t2 WHERE some_whereclause);
>
> it will select these rows which ones are not in the subquery. but you can
> do it simply by getting the negate of the whereclause...
>
>
> Is it possible to have this result (interval of 3)?
>
> result
> ------
> 1
> 4
> 7
>
>
> i don't see what you mean. please describe it.
>
>
> thanks,
> kenneth
>
> --
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>
>
>
> Bye,
>
> Gergely Czuczy
> mailto: phoemix(at)harmless(dot)hu
> PGP: http://phoemix.harmless.hu/phoemix.pgp
>
> "Wish a god, a star, to believe in,
> With the realm of king of fantasy..."
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>
>
>
>
>
> --
> [IMAGE]
>
>

Bye,

Gergely Czuczy
mailto: phoemix(at)harmless(dot)hu
PGP: http://phoemix.harmless.hu/phoemix.pgp

"Wish a god, a star, to believe in,
With the realm of king of fantasy..."


From: Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>
To: Gergely Czuczy <phoemix(at)harmless(dot)hu>
Cc: Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>, pgsql-interfaces(at)postgresql(dot)org
Subject: Re: help on SQL
Date: 2004-04-21 07:50:07
Message-ID: 408627AF.2020204@hq.ntsp.nec.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

hi gergely,

thanks for replying..

what i mean is supposing there is a table with the following rows:

data
-----
1
2
3
4
5
6
7

is it possible to get every other N-row in the table?
example, if N is 3.
data
-----
1
4
7

thanks,
kenneth

Gergely Czuczy wrote:

On Wed, 21 Apr 2004, Kenneth Suralta wrote:



hello everyone,

is it possible to get every other row in the table?
like for example:
data
-----
1
2
3
4
5
6
7


SELECT t.fields FROM table t WHERE data NOT IN (SELECT t2.data FROM table
t2 WHERE some_whereclause);

it will select these rows which ones are not in the subquery. but you can
do it simply by getting the negate of the whereclause...


Is it possible to have this result (interval of 3)?

result
------
1
4
7


i don't see what you mean. please describe it.


thanks,
kenneth

--

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster




Bye,

Gergely Czuczy
mailto: phoemix(at)harmless(dot)hu
PGP: http://phoemix.harmless.hu/phoemix.pgp

"Wish a god, a star, to believe in,
With the realm of king of fantasy..."

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)

--


From: Michael Stephenson <mstephenson(at)tirin(dot)openworld(dot)co(dot)uk>
To: Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>
Cc: Gergely Czuczy <phoemix(at)harmless(dot)hu>, pgsql-interfaces(at)postgresql(dot)org
Subject: Re: help on SQL
Date: 2004-04-21 09:54:10
Message-ID: Pine.LNX.4.58.0404210952400.29792@tirin.openworld.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

test=# create table data (data int);
CREATE
test=# insert into data values(1);
INSERT 3531768 1
test=# insert into data values(2);
INSERT 3531769 1
test=# insert into data values(3);
INSERT 3531770 1
test=# insert into data values(4);
INSERT 3531771 1
test=# insert into data values(5);
INSERT 3531772 1
test=# insert into data values(6);
INSERT 3531773 1
test=# insert into data values(7);
INSERT 3531774 1
test=# select * from data where (data - 1) % 3 = 0;
data
------
1
4
7
(3 rows)

test=#

HTH

Michael

Web Applications Developer
Open World Ltd, 11 Riverside Court, Riverside Road, Bath, BA2 3DZ.
Tel: +44 1225 444950 Fax: +44 1225 336738 http://www.openworld.co.uk/

CONFIDENTIALITY NOTICE
The information contained in this message is confidential, intended only for
the use of the individual or the entity named as recipient. If the reader of
this message is not that recipient, you are notified that any
dissemination,
distribution or copy of this message is strictly prohibited. If you have
received this message in error, please immediately notify us by telephone on
the number above. Your co-operation is appreciated.

On Wed, 21 Apr 2004, Kenneth Suralta wrote:

> hi gergely,
>
> thanks for replying..
> what i mean is supposing there is a table with the following rows:
>
> data
> -----
> 1
> 2
> 3
> 4
> 5
> 6
> 7
>
> is it possible to get every other N-row in the table?
> example, if N is 3.
> data
> -----
> 1
> 4
> 7
>
> thanks,
> kenneth
>
>
>
> Gergely Czuczy wrote:
>
> On Wed, 21 Apr 2004, Kenneth Suralta wrote:
>
>
>
> hello everyone,
>
> is it possible to get every other row in the table?
> like for example:
> data
> -----
> 1
> 2
> 3
> 4
> 5
> 6
> 7
>
>
> SELECT t.fields FROM table t WHERE data NOT IN (SELECT t2.data FROM table
> t2 WHERE some_whereclause);
>
> it will select these rows which ones are not in the subquery. but you can
> do it simply by getting the negate of the whereclause...
>
>
> Is it possible to have this result (interval of 3)?
>
> result
> ------
> 1
> 4
> 7
>
>
> i don't see what you mean. please describe it.
>
>
> thanks,
> kenneth
>
> --
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>
>
>
> Bye,
>
> Gergely Czuczy
> mailto: phoemix(at)harmless(dot)hu
> PGP: http://phoemix.harmless.hu/phoemix.pgp
>
> "Wish a god, a star, to believe in,
> With the realm of king of fantasy..."
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>
>
>
>
>
> --
> [IMAGE]
>
>


From: Gergely Czuczy <phoemix(at)harmless(dot)hu>
To: Michael Stephenson <mstephenson(at)tirin(dot)openworld(dot)co(dot)uk>
Cc: Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>, <pgsql-interfaces(at)postgresql(dot)org>
Subject: Re: help on SQL
Date: 2004-04-21 10:21:32
Message-ID: Pine.LNX.4.44.0404211219360.30186-100000@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

hello

what you have done is not the thing that was asked. you've retrieved every
row that has a spacial value(data-1 %3). the request was to retrieve every
3rd row. the difference is that, the 'every Nth' row has nothing to do
with the value of any field in the row. try to retrieve every Nth row from
a query where there are no integer values, only timestamps and string. or
try to do your method where the integer value is not continous.

On Wed, 21 Apr 2004, Michael Stephenson wrote:

> test=# create table data (data int);
> CREATE
> test=# insert into data values(1);
> INSERT 3531768 1
> test=# insert into data values(2);
> INSERT 3531769 1
> test=# insert into data values(3);
> INSERT 3531770 1
> test=# insert into data values(4);
> INSERT 3531771 1
> test=# insert into data values(5);
> INSERT 3531772 1
> test=# insert into data values(6);
> INSERT 3531773 1
> test=# insert into data values(7);
> INSERT 3531774 1
> test=# select * from data where (data - 1) % 3 = 0;
> data
> ------
> 1
> 4
> 7
> (3 rows)
>
> test=#
>
> HTH
>
> Michael
>
> Web Applications Developer
> Open World Ltd, 11 Riverside Court, Riverside Road, Bath, BA2 3DZ.
> Tel: +44 1225 444950 Fax: +44 1225 336738 http://www.openworld.co.uk/
>
> CONFIDENTIALITY NOTICE
> The information contained in this message is confidential, intended only for
> the use of the individual or the entity named as recipient. If the reader of
> this message is not that recipient, you are notified that any
> dissemination,
> distribution or copy of this message is strictly prohibited. If you have
> received this message in error, please immediately notify us by telephone on
> the number above. Your co-operation is appreciated.
>
> On Wed, 21 Apr 2004, Kenneth Suralta wrote:
>
> > hi gergely,
> >
> > thanks for replying..
> > what i mean is supposing there is a table with the following rows:
> >
> > data
> > -----
> > 1
> > 2
> > 3
> > 4
> > 5
> > 6
> > 7
> >
> > is it possible to get every other N-row in the table?
> > example, if N is 3.
> > data
> > -----
> > 1
> > 4
> > 7
> >
> > thanks,
> > kenneth
> >
> >
> >
> > Gergely Czuczy wrote:
> >
> > On Wed, 21 Apr 2004, Kenneth Suralta wrote:
> >
> >
> >
> > hello everyone,
> >
> > is it possible to get every other row in the table?
> > like for example:
> > data
> > -----
> > 1
> > 2
> > 3
> > 4
> > 5
> > 6
> > 7
> >
> >
> > SELECT t.fields FROM table t WHERE data NOT IN (SELECT t2.data FROM table
> > t2 WHERE some_whereclause);
> >
> > it will select these rows which ones are not in the subquery. but you can
> > do it simply by getting the negate of the whereclause...
> >
> >
> > Is it possible to have this result (interval of 3)?
> >
> > result
> > ------
> > 1
> > 4
> > 7
> >
> >
> > i don't see what you mean. please describe it.
> >
> >
> > thanks,
> > kenneth
> >
> > --
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 4: Don't 'kill -9' the postmaster
> >
> >
> >
> > Bye,
> >
> > Gergely Czuczy
> > mailto: phoemix(at)harmless(dot)hu
> > PGP: http://phoemix.harmless.hu/phoemix.pgp
> >
> > "Wish a god, a star, to believe in,
> > With the realm of king of fantasy..."
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> > (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
> >
> >
> >
> >
> >
> > --
> > [IMAGE]
> >
> >
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>

Bye,

Gergely Czuczy
mailto: phoemix(at)harmless(dot)hu
PGP: http://phoemix.harmless.hu/phoemix.pgp

"Wish a god, a star, to believe in,
With the realm of king of fantasy..."


From: Michael Stephenson <mstephenson(at)tirin(dot)openworld(dot)co(dot)uk>
To: Gergely Czuczy <phoemix(at)harmless(dot)hu>
Cc: Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>, pgsql-interfaces(at)postgresql(dot)org
Subject: Re: help on SQL
Date: 2004-04-21 10:38:25
Message-ID: Pine.LNX.4.58.0404211033560.31842@tirin.openworld.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

In postgres (or in SQL in general) there isn't a natural way of expressing
what you want to do.

I suppose you could do something like:

create temp sequence dataseq;
select data from data where nextval('dataseq') % 3 = 1;
drop sequence dataseq;

Which'll do the job, but is a bit nasty.

Michael

Web Applications Developer
Open World Ltd, 11 Riverside Court, Riverside Road, Bath, BA2 3DZ.
Tel: +44 1225 444950 Fax: +44 1225 336738 http://www.openworld.co.uk/

CONFIDENTIALITY NOTICE
The information contained in this message is confidential, intended only for
the use of the individual or the entity named as recipient. If the reader of
this message is not that recipient, you are notified that any
dissemination,
distribution or copy of this message is strictly prohibited. If you have
received this message in error, please immediately notify us by telephone on
the number above. Your co-operation is appreciated.

On Wed, 21 Apr 2004, Gergely Czuczy wrote:

> hello
>
> what you have done is not the thing that was asked. you've retrieved every
> row that has a spacial value(data-1 %3). the request was to retrieve every
> 3rd row. the difference is that, the 'every Nth' row has nothing to do
> with the value of any field in the row. try to retrieve every Nth row from
> a query where there are no integer values, only timestamps and string. or
> try to do your method where the integer value is not continous.
>
> On Wed, 21 Apr 2004, Michael Stephenson wrote:
>
> > test=# create table data (data int);
> > CREATE
> > test=# insert into data values(1);
> > INSERT 3531768 1
> > test=# insert into data values(2);
> > INSERT 3531769 1
> > test=# insert into data values(3);
> > INSERT 3531770 1
> > test=# insert into data values(4);
> > INSERT 3531771 1
> > test=# insert into data values(5);
> > INSERT 3531772 1
> > test=# insert into data values(6);
> > INSERT 3531773 1
> > test=# insert into data values(7);
> > INSERT 3531774 1
> > test=# select * from data where (data - 1) % 3 = 0;
> > data
> > ------
> > 1
> > 4
> > 7
> > (3 rows)
> >
> > test=#
> >
> > HTH
> >
> > Michael
> >
> > Web Applications Developer
> > Open World Ltd, 11 Riverside Court, Riverside Road, Bath, BA2 3DZ.
> > Tel: +44 1225 444950 Fax: +44 1225 336738 http://www.openworld.co.uk/
> >
> > CONFIDENTIALITY NOTICE
> > The information contained in this message is confidential, intended only for
> > the use of the individual or the entity named as recipient. If the reader of
> > this message is not that recipient, you are notified that any
> > dissemination,
> > distribution or copy of this message is strictly prohibited. If you have
> > received this message in error, please immediately notify us by telephone on
> > the number above. Your co-operation is appreciated.
> >
> > On Wed, 21 Apr 2004, Kenneth Suralta wrote:
> >
> > > hi gergely,
> > >
> > > thanks for replying..
> > > what i mean is supposing there is a table with the following rows:
> > >
> > > data
> > > -----
> > > 1
> > > 2
> > > 3
> > > 4
> > > 5
> > > 6
> > > 7
> > >
> > > is it possible to get every other N-row in the table?
> > > example, if N is 3.
> > > data
> > > -----
> > > 1
> > > 4
> > > 7
> > >
> > > thanks,
> > > kenneth
> > >
> > >
> > >
> > > Gergely Czuczy wrote:
> > >
> > > On Wed, 21 Apr 2004, Kenneth Suralta wrote:
> > >
> > >
> > >
> > > hello everyone,
> > >
> > > is it possible to get every other row in the table?
> > > like for example:
> > > data
> > > -----
> > > 1
> > > 2
> > > 3
> > > 4
> > > 5
> > > 6
> > > 7
> > >
> > >
> > > SELECT t.fields FROM table t WHERE data NOT IN (SELECT t2.data FROM table
> > > t2 WHERE some_whereclause);
> > >
> > > it will select these rows which ones are not in the subquery. but you can
> > > do it simply by getting the negate of the whereclause...
> > >
> > >
> > > Is it possible to have this result (interval of 3)?
> > >
> > > result
> > > ------
> > > 1
> > > 4
> > > 7
> > >
> > >
> > > i don't see what you mean. please describe it.
> > >
> > >
> > > thanks,
> > > kenneth
> > >
> > > --
> > >
> > >
> > >
> > > ---------------------------(end of broadcast)---------------------------
> > > TIP 4: Don't 'kill -9' the postmaster
> > >
> > >
> > >
> > > Bye,
> > >
> > > Gergely Czuczy
> > > mailto: phoemix(at)harmless(dot)hu
> > > PGP: http://phoemix.harmless.hu/phoemix.pgp
> > >
> > > "Wish a god, a star, to believe in,
> > > With the realm of king of fantasy..."
> > >
> > >
> > > ---------------------------(end of broadcast)---------------------------
> > > TIP 2: you can get off all lists at once with the unregister command
> > > (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
> > >
> > >
> > >
> > >
> > >
> > > --
> > > [IMAGE]
> > >
> > >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 7: don't forget to increase your free space map settings
> >
>
>
> Bye,
>
> Gergely Czuczy
> mailto: phoemix(at)harmless(dot)hu
> PGP: http://phoemix.harmless.hu/phoemix.pgp
>
> "Wish a god, a star, to believe in,
> With the realm of king of fantasy..."
>


From: Bruno Wolff III <bruno(at)wolff(dot)to>
To: Gergely Czuczy <phoemix(at)harmless(dot)hu>
Cc: Michael Stephenson <mstephenson(at)tirin(dot)openworld(dot)co(dot)uk>, Kenneth Suralta <ksuralta(at)ntsp(dot)nec(dot)co(dot)jp>, pgsql-interfaces(at)postgresql(dot)org
Subject: Re: help on SQL
Date: 2004-04-21 17:51:54
Message-ID: 20040421175154.GA30712@wolff.to
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

On Wed, Apr 21, 2004 at 12:21:32 +0200,
Gergely Czuczy <phoemix(at)harmless(dot)hu> wrote:
> hello
>
> what you have done is not the thing that was asked. you've retrieved every
> row that has a spacial value(data-1 %3). the request was to retrieve every
> 3rd row. the difference is that, the 'every Nth' row has nothing to do
> with the value of any field in the row. try to retrieve every Nth row from
> a query where there are no integer values, only timestamps and string. or
> try to do your method where the integer value is not continous.

Rows do not have any order. Unless you define the ordering you want in terms
of same data in the rows there is no every other row.

If you can order the rows (no randomly breaking ties) then you can get
the number of the row in this ordering (though not by a very efficient
method) and select rows based on the this number.