Toon posts:

[Postgres] Row Positie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil voor mijn programma (C#<->Npgsql<->Postgres database) een lijstje kunnen genereren van meeste verhuurde CD's. Voor het verhuren van CD's heb ik de volgende tabel:

startdate [PK]
followupnr [PK]
fk_cd [FK]
fk_firstname [FK]
fk_lastname [FK]
enddate

fk_cd verwijst dan naar cd.title en fk_firstname en fk_lastname verwijzen respectievelijk naar renter.firstname en renter.lastname. Dit werkt op zich prima.

Nu wil ik alleen dus dat lijstje hebben met de meeste verhuurde CD's op volgorde zeg maar. Dus heb ik daarvoor de volgende SQL query:

SQL:
1
SELECT fk_cd, count(fk_cd) FROM rental GROUP BY fk_cd ORDER BY count(fk_cd) DESC;


Ook dat werkt prima, en levert me een mooi lijstje op. Nu wil ik alleen nog weten op welke positie in dat lijstje een bepaalde CD staat. Daar heb ik natuurlijk even op gezocht met Google, maar 'k vind alleen iets voor MS SQL server, en ik heb wel geprobeerd dat enigzins te vertalen naar Postgres, maar dat wou niet echt lukken.

Iemand een idee hoe ik dit kan oplossen?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je wilt er dus een rownumber bij hebben?
Of wil je als je van cdX wat opvraagt weten op welke positie ie stond?
't Eerste kan je denk ik het makkelijkst met je programmeeromgeving oplossen

voor het tweede zou zou zoiets kunnen doen:
SELECT fk_cd, count(fk_cd) as cdcount, count(select fk_cd, count(fk_cd) from rental group by fk_cd having count(fk_cd) > cdcount)
FROM rental GROUP BY fk_cd ORDER BY count(fk_cd) DESC;

maar of het werkt weet ik niet zeker :o

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Stel cd A is 10x uitgeleend en cd B ook 10x. Welke staat dan op 1? Wat ik hiermee wil zeggen is dat het rownummer niet gelijk hoeft te zijn aan de positie.

Je kunt beter en goede definitie voor positie geven. Wat dacht je bijvoorbeeld van deze?:

De positie van een CD X is gelijk aan het aantal CD's dat vaker is verhuurt dan de CD X plus 1.

Op deze manier zal CD A en CD B beide dezelfde positie krijgen ;). De bovengenoemde definitie is ook erg makkelijk om te zetten in SQL.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Hmmz, ik kom er toch niet helemaal uit. Die definitie is op zich wel goed, maar hoe zet ik dat om in SQL? Ik heb 't statement hierboven gebruikt, maar dat werkt dus niet. Volgens mij kan Postgres niet iets als <columnname> = (<query>) of zo.