Thread: Remove duplicate rows and order by number of occurences
Hello. I'm trying to SELECT from the following table: file_id --------- 1 1 2 3 5 6 9 9 9 10 10 The result I'm trying to achieve is essentially to order the file_id column, in descending order, by the number of times each row occurs with a given value. I would also like to remove duplicate rows. In other words, the above table becomes (approximately): file_id --------- 9 10 1 6 5 3 2 The order of the last four values isn't significant (they occur an equal number of times). I thought that this might be the solution: SELECT file_id FROM temp_tagged; GROUP BY file_id ORDER BY count (file_id) DESC; But apparently, it isn't. Any help would be appreciated.
Try this SELECT file_id ,COUNT(*) as numberOfOccurrences FROM temp_tagged GROUP BY file_id ORDER BY numberOfOccurrences DESC; These kind of questions are better answered in this mailing list : pgsql-sql@postgresql.org Best, Oliveiros ----- Original Message ----- From: <postgres-novice@coreland.ath.cx> To: <pgsql-novice@postgresql.org> Sent: Thursday, January 29, 2009 5:04 PM Subject: [NOVICE] Remove duplicate rows and order by number of occurences > Hello. > > I'm trying to SELECT from the following table: > > file_id > --------- > 1 > 1 > 2 > 3 > 5 > 6 > 9 > 9 > 9 > 10 > 10 > > The result I'm trying to achieve is essentially to order the > file_id column, in descending order, by the number of times > each row occurs with a given value. I would also like to remove > duplicate rows. In other words, the above table becomes > (approximately): > > file_id > --------- > 9 > 10 > 1 > 6 > 5 > 3 > 2 > > The order of the last four values isn't significant (they occur > an equal number of times). > > I thought that this might be the solution: > > SELECT file_id FROM temp_tagged; > GROUP BY file_id > ORDER BY count (file_id) DESC; > > But apparently, it isn't. > > Any help would be appreciated. > > -- > Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-novice >
> I thought that this might be the solution: > > SELECT file_id FROM temp_tagged; > GROUP BY file_id > ORDER BY count (file_id) DESC; > > But apparently, it isn't. > > Any help would be appreciated. > Try SELECT file_id, count(file_id) FROM temp_tagged GROUP BY file_id ORDER BY count(file_id) DESC
Hello, I think you need something like ... SELECT count(*), file_id FROM temp_tagged GROUP BY file_id HAVING count(*) > 1; This will select only those records that are duplicated. Carol On Jan 29, 2009, at 12:04 PM, postgres-novice@coreland.ath.cx wrote: > Hello. > > I'm trying to SELECT from the following table: > > file_id > --------- > 1 > 1 > 2 > 3 > 5 > 6 > 9 > 9 > 9 > 10 > 10 > > The result I'm trying to achieve is essentially to order the > file_id column, in descending order, by the number of times > each row occurs with a given value. I would also like to remove > duplicate rows. In other words, the above table becomes > (approximately): > > file_id > --------- > 9 > 10 > 1 > 6 > 5 > 3 > 2 > > The order of the last four values isn't significant (they occur > an equal number of times). > > I thought that this might be the solution: > > SELECT file_id FROM temp_tagged; > GROUP BY file_id > ORDER BY count (file_id) DESC; > > But apparently, it isn't. > > Any help would be appreciated. > > -- > Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-novice