Toon posts:

SQL top 5 per maand selecteren...

Pagina: 1
Acties:
  • 597 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Dit is mijn tabel:

id nummeraantalNaam invoerderDatumGespreksonderwerp
11Dennis22-8-20051002
21Joop12-8-2005112


Nu wil ik de top 5 gespreksonderwerpen geordend per maand.

Nu heb ik eerst een count gemaakt van gespreksonderwerpen per maand, daarna moet ik een top 5 erover heen gooien en dan order by datum?

Ik kom niet helemaal uit de sql code, heeft misschien iemand een voorbeeld?

[ Voor 5% gewijzigd door Verwijderd op 08-09-2005 11:13 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Wat heb je tot nu toe zelf bedacht, of hoop je dat iemand hier een letterlijk antwoord voor je geeft en jouw werk doet? :)

[ Voor 56% gewijzigd door gorgi_19 op 08-09-2005 11:09 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • icecoolsniper
  • Registratie: Juni 2002
  • Laatst online: 30-04 22:58

icecoolsniper

never run from a sniper!

je zou de tabel gespreksonderwerp kunnen counten en dan sorteren en vervolgens een nieuwe tabel aanmaken met de 5 hoogste waardes

http://www.tweakers.net/gallery/58175/sys


  • TXC
  • Registratie: Oktober 2002
  • Laatst online: 24-12-2025

TXC

icecoolsniper schreef op donderdag 08 september 2005 @ 11:12:
je zou de tabel gespreksonderwerp kunnen counten en dan sorteren en vervolgens een nieuwe tabel aanmaken met de 5 hoogste waardes
Counten mee eens, sorteren ook maar die nieuwe tabel kan toch ook gewoon een query zijn met LIMIT 5? Dan krijg je de eerste 5 records terug van je DBMS. Ik denk namelijk dat hij ze wil tonen op een formulier of rapport.

  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 18-03 22:28

Wijnbo

Electronica werkt op rook.

-

[ Voor 100% gewijzigd door Wijnbo op 08-09-2005 11:21 ]


Verwijderd

Topicstarter
gorgi_19 schreef op donderdag 08 september 2005 @ 11:08:
Wat heb je tot nu toe zelf bedacht, of hoop je dat iemand hier een letterlijk antwoord voor je geeft en jouw werk doet? :)
Select aantal, naam invoerder, gespreksonderwerp, count(*) as aantalpm FROM telefoonregistratie
GROUP BY datum;

  • TXC
  • Registratie: Oktober 2002
  • Laatst online: 24-12-2025

TXC

StonedKinG schreef op donderdag 08 september 2005 @ 11:15:
SELECT TOP 5 count (lorem)
FROM ipsum
ORDER BY lorem ASC
Laat die beste jongen nou zelf even prutsen daar leert hij van :/

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-04 12:54

Jaspertje

Max & Milo.. lief

Heb laatst trouwens ergens gelezen dat een TOP() zeer slecht is voor de performance.. hoe hoger het getal van de top, hoe slechter het wordt.. (top1 maakt niet uit, top 100 wel)

  • icecoolsniper
  • Registratie: Juni 2002
  • Laatst online: 30-04 22:58

icecoolsniper

never run from a sniper!

TXC schreef op donderdag 08 september 2005 @ 11:15:
[...]


Counten mee eens, sorteren ook maar die nieuwe tabel kan toch ook gewoon een query zijn met LIMIT 5? Dan krijg je de eerste 5 records terug van je DBMS. Ik denk namelijk dat hij ze wil tonen op een formulier of rapport.
ik ben niet zo heel bekend met sql. Mja op de uni heb ik het vak databases gehad met bijbehorend boek, en daar maakten ze ook voor zulke dingen een nieuwe tabel aan.

http://www.tweakers.net/gallery/58175/sys


  • TXC
  • Registratie: Oktober 2002
  • Laatst online: 24-12-2025

TXC

icecoolsniper schreef op donderdag 08 september 2005 @ 11:31:
[...]

ik ben niet zo heel bekend met sql. Mja op de uni heb ik het vak databases gehad met bijbehorend boek, en daar maakten ze ook voor zulke dingen een nieuwe tabel aan.
Dat heeft alleen nu als je de data voor een langere tijd wilt bewaren. Als je de opgehaalde data direct gaat presenteren hoeft het resultaat niet eerst in een tabel te worden opgeslagen, maar kan direct de data uit de query worden gepresenteerd.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Wil je wel een Count gebruiken en geen SUM? En waarom groupeer je op datums, terwijl je wilt grouperen op maand?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Let wel even op dat TOP 5 heel wat anders is dan TOP 5 van een groep gegevens. Volgens mij kijken de meeste mensen hier daarover heen :)

Oops! Google Chrome could not find www.rijks%20museum.nl


  • TXC
  • Registratie: Oktober 2002
  • Laatst online: 24-12-2025

TXC

P_de_B schreef op donderdag 08 september 2005 @ 11:49:
Let wel even op dat TOP 5 heel wat anders is dan TOP 5 van een groep gegevens. Volgens mij kijken de meeste mensen hier daarover heen :)
Ik kijk er dan vast overheen want ik ken die functie niet. Daarom stelde ik voor met LIMIT de eerste 5 records te tonen van de op aantal gesorteerde kolom met Counts.

Ah ik snap al wat je bedoelt. TOP returnt de eerste 5 records en niet de "top 5" zeg maar. Dus moet je alsnog eerst sorteren op de Count kolom en daarna pas TOP 5 daarvan pakken.

[ Voor 18% gewijzigd door TXC op 08-09-2005 12:49 ]


  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
TXC schreef op donderdag 08 september 2005 @ 12:44:
[...]


Ik kijk er dan vast overheen want ik ken die functie niet. Daarom stelde ik voor met LIMIT de eerste 5 records te tonen van de op aantal gesorteerde kolom met Counts.

Ah ik snap al wat je bedoelt. TOP returnt de eerste 5 records en niet de "top 5" zeg maar. Dus moet je alsnog eerst sorteren op de Count kolom en daarna pas TOP 5 daarvan pakken.
Nee, ook dat niet. De vraag is om voor elke maand een top 5 te krijgen, dus bij 3 maanden krijg je 15 records (3x een top 5).

@TS:
Om heel eerlijk te zijn weet ik ook geen mooie oplossing. evt zou het kunnen door in een stored procedure met een cursor door de maanden heen te loopen en daarin een string samen te stellen die voor elke maand de TOP 5 oplevert, waarbij je een totale UNION samenstelt die je aan het einde van je sp execute.
Evt zou je ook nog met een tijdelijke tabel kunnen werken, maar dat is een nog minder mooie oplossing (tabel moet ook verwijderd worden enzo)

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Afhankelijk van het RDBMS kan dit wel in 1 query zonder een cursor.

@TS: welke database gebruik je?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Oracle kent hiervoor inderdaad functies om het in 1 query op te lossen.

Zoek maar eens op window and analytic functions (en dan iets met rank oid)

Verwijderd

Topicstarter
Swa-baldie schreef op donderdag 08 september 2005 @ 15:45:
Oracle kent hiervoor inderdaad functies om het in 1 query op te lossen.

Zoek maar eens op window and analytic functions (en dan iets met rank oid)
Bedankt jongens.... ik ga aan de slag

[ Voor 4% gewijzigd door Verwijderd op 08-09-2005 16:17 ]


  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Verwijderd schreef op donderdag 08 september 2005 @ 16:16:
[...]


Bedankt jongens.... ik ga aan de slag
Maar welk rdbms gebruik je?

  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
P_de_B schreef op donderdag 08 september 2005 @ 15:28:
Afhankelijk van het RDBMS kan dit wel in 1 query zonder een cursor.

@TS: welke database gebruik je?
Hmm ok. ik ging even uit van SQL Server, maar dat was een nergens op gebaseerde aanname :)
Gezien zijn reactie gebruikt hij Oracle
Pagina: 1