Обсуждение: Problem with getting the right order
I have a datbase that look like this:
vnr|cnr|enr| ip|dato
---+---+---+---------------+----------------------
1| 1| 17|195.192.136.223|1998-10-14 02:30:18+02
2| 1| 1|195.192.136.164|1998-10-14 02:33:03+02
5| 1| 13|195.192.136.173|1998-10-14 02:49:24+02
8| 1| 15|195.192.136.207|1998-10-14 02:49:27+02
9| 1| 16|195.192.136.211|1998-10-14 02:49:31+02
10| 1| 11|195.192.136.123|1998-10-14 02:49:44+02
11| 1| 15|195.192.136.162|1998-10-14 02:49:48+02
7| 1| 13|195.192.136.126|1998-10-14 02:49:50+02
Where vnr, cnr, enr are int fields, and ip, date are text. The database
is used for a votingsystem. vnr is the vote number, cnr is the
contestnumber and enr is the entrynumber.
When i do a :
./psql -c "select count(vnr),enr from votes where cnr=1 group by enr"
vote
to get the result from contest number 1 i get :
count|enr
-----+---
11| 1
1| 2
1| 3
4| 4
1| 5
1| 6
10| 8
....
This is almost what i want, execpt that i want the result to be ordered
by count, instead og enr. so that the entry, which got most votes is listed first
For example:
11| 1
10| 8
4| 4
1| 2
1| 3
1| 5
1| 6
hope someone outthere can help me :)
Henrik Pedersen
Demark
On Wed, 21 Oct 1998, Henrik Pedersen wrote:
// When i do a :
//
// ./psql -c "select count(vnr),enr from votes where cnr=1 group by enr"
// vote
// This is almost what i want, execpt that i want the result to be
// ordered by count, instead og enr. so that the entry, which got most
// votes is listed first
You should slap an ``order by count'' at the end. I think it'd be
``order by count(vnr)'' or you could alias it and order it by the alias.
// For example:
//
// 11| 1
// 10| 8
// 4| 4
// 1| 2
// 1| 3
// 1| 5
// 1| 6
//
//
//
// hope someone outthere can help me :)
//
// Henrik Pedersen
// Demark
//
//
--
SA, beyond.com The world is watching America,
pub 1024/3CAE01D5 1994/11/03 Dustin Sallings <dustin@spy.net>
| Key fingerprint = 87 02 57 08 02 D0 DA D6 C8 0F 3E 65 51 98 D8 BE
L________________________________________ and America is watching TV. __
Generally, something like
select count(vnr), enr
from votes
group by err
order by 1 desc
should work. But I tried it only with my own tables ... For
referencing to the first column of the resulting table ("order by 1")
you can also use
select count(vnr) as the_count, [...]
order by the_count desc
If you want to get reversed ordering (you said you'd like to get the
bigger numbers first), you have to specify "desc", default is "asc",
which will do it the other way round.
Hope it helps!
Ulf
--
======================================================================
%%%%% Ulf Mehlig <ulf.mehlig@uni-bremen.de>
%%%%!%%% Projekt "MADAM" <umehlig@uni-bremen.de>
%%%% %!% %%%% ----------------------------------------------------
---| %%% MADAM: MAngrove | Center for Tropical Marine
||--%!% Dynamics | Biology
|| And | Fahrenheitstrasse 1
_ /||\_/\_ Management |
/ / \ \ ~~~~~~~~~~~~~~~~~ | 28359 Bremen/Germany
~~~~~~~~~~~~~~~~~~~~