[SQL] Count gebruiken of wat anders? *

Pagina: 1
Acties:

  • Foutlook
  • Registratie: Februari 2001
  • Niet online
Hallo, heb een probleem waar ik niet helemaal uitkom.

Heb een tabel 'weblogs' met (o.a.) de volgende velden: log_id, log_naam, log_postcode, log_woonplaats, log_provincie.

Nu wil ik graag de provincie met het meeste aantal weblogs laten zien. Ik heb al een statistiekenpagina met alle bestaande provincie's met daarachter het aantal weblogs wat zich in die provincie bevind. Dat is dus het probleem niet.

Ik wil graag de prov met de meeste 'entries' zeg maar. Ik kan per provincie de entries optellen, en het hoogste getal pakken, en vervolgens de provincie die daarbij hoort maar volgens mij moet het makkelijker kunnen.

Ik dacht iets met count icm met max oid? Kan iemand mij verder helpen? Ik loop even vast :(

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 24-08 23:08
Wat je wilt, is groeperen op provincie. Vervolgens sorteer je op het aantal rijen per groep. Kijk eens in een SQL handleiding/tutorial naar 'COUNT' en 'GROUP BY'.

[ Voor 13% gewijzigd door Soultaker op 14-01-2003 14:26 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 25-08 16:18

.oisyn

Moderator Devschuur®

Demotivational Speaker

SQL neem ik aan?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Soultaker schreef op 14 January 2003 @ 14:25:
Wat je wilt, is groeperen op provincie. Vervolgens sorteer je op het aantal rijen per groep. Kijk eens in een SQL handleiding/tutorial naar 'COUNT' en 'GROUP BY'.
SUM en GROUP BY had hij al gevonden volgens mij.
Wat jij volgens mij verder wilt is een ORDER BY count(*) met een LIMIT

Is het MySQL?

Verwijderd

SELECT log_provincie, count(*) as log_count
FROM weblogs
GROUP BY log_provincie
ORDER BY log_count DESC
LIMIT 1

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:50

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 14 januari 2003 @ 14:36:
SELECT log_provincie, count(*) as log_count
FROM weblogs
GROUP BY log_provincie
ORDER BY log_count DESC
LIMIT 1
Want? Waarom? Onderbouwing? Uitleg?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Foutlook
  • Registratie: Februari 2001
  • Niet online
Verwijderd schreef op 14 januari 2003 @ 14:36:
SELECT log_provincie, count(*) as log_count
FROM weblogs
GROUP BY log_provincie
ORDER BY log_count DESC
LIMIT 1
Hee, het werkt wel! :) Maar kan je zoals al gezegd wat uitleg geven. Ik wil graag ook snappen wat ik doe.

Dat count(*) telt alle entries van een log_prov op?

  • whoami
  • Registratie: December 2000
  • Nu online
Die query gaat voor iedere provincie (GROUP BY provincie) het aantal records gaan tellen dat voorkomt voor die provincie. (COUNT).
Je sorteert ze aflopend (ORDER BY DESC), en met de LIMIT 1 geef je aan dat je enkel de eerste row van de resultset wilt terugkrijgen. Die is immers de row met de hoogste count.

Misschien heb je hier ook wat aan: sql tutorial

https://fgheysels.github.io/


  • Foutlook
  • Registratie: Februari 2001
  • Niet online
snap het nu, zat zelf wel aardig in de richting maar had even dit zetje nodig.

Nog 1 vraag, het klinkt heel dom want het antwoord moet heel dicht hierbij liggen maar het lukt me niet om het te bedenken.

Ik wil dus ook de log_pc (postcode) met de meeste records laten zien. Hetzelfde met log_prov maar dan met log_pc.

Het is alleen 1 probleem, in de tabel staan ze als bv 3971. Maar ik wil de dichtbevolkste regio laten zien, dus de eerste twee getallen: 39. Ik weet wel hoe ik een substring moet toepassen maar moet ik dan alle log_pc's binnenhalen, overal een substring van maken en daar een count van doen? Kan dat niet makkelijker?

Het moet volgens mij bijna op dezelfde manier als hierboven.. kan iemand me nog even verder helpen?

  • whoami
  • Registratie: December 2000
  • Nu online
Kan je het niet als volgt doen:
(pseudo-sql code :P )
code:
1
2
3
4
select substring(log_pc, 2) AS code, count(*)
from tabel
group by code
...

Dus, door gebruik te maken van aliases?

https://fgheysels.github.io/


  • Foutlook
  • Registratie: Februari 2001
  • Niet online
whoami schreef op 14 januari 2003 @ 15:12:
Kan je het niet als volgt doen:
(pseudo-sql code :P )
code:
1
2
3
4
select substring(log_pc, 2) AS code, count(*)
from tabel
group by code
...

Dus, door gebruik te maken van aliases?
mm ja ik gebruik nu dit:

code:
1
2
3
4
5
SELECT substring( log_pc, 0, 2 ) AS code, count( * ) AS countpc
FROM weblogs
GROUP BY code
ORDER BY countpc DESC 
LIMIT 1


en dat geeft een count van 5 terug en een lege 'code'
er bestaan idd 5 postcode's maar nu nog de postcode met de meeste records.

[ Voor 6% gewijzigd door Foutlook op 14-01-2003 15:24 ]


Verwijderd

Bij die substring lees je de eerste 2 karakters uit en dan groupeer je daarop. Zou het kunnen dat die 2 eerste bij allen gelijk zijn?

  • Foutlook
  • Registratie: Februari 2001
  • Niet online
Nee, er bestaan postcode's in de db waarvan de eerste twee getallen verschillen.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Wat dacht je van substring(log_pc,1,2)
dat werkt een stuk beter!

  • whoami
  • Registratie: December 2000
  • Nu online
Goodielover schreef op 15 januari 2003 @ 20:26:
Wat dacht je van substring(log_pc,1,2)
dat werkt een stuk beter!


Ik had dan ook gezegd dat mijn code pseudo-code was. ;) Ik ken die syntax niet van buiten, en ik was te lui om het op te zoeken. (Die functie-naam van substring was trouwens een gok). Het was eigenlijk aan de topicstarter om een en ander zelf eens na te gaan.

https://fgheysels.github.io/


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Oeps, heb ik het verklapt!
In mijn eerste post had ik ook geprobeerd vooral hints te geven, maar Creepy gaf al direct het statement, dus toen was de uitdaging voor de TS al weer verdwenen.
Pagina: 1