simpel SQL vraagje

Pagina: 1
Acties:

  • BMWHeaven
  • Registratie: Juli 2002
  • Laatst online: 21-08 11:35
Hoi,

ik heb een vraagje mbt SQL:

ik heb een tabel met 2 kolommen, nl: 1) naam 2) geslacht...
Deze tabel is gevuld met de volgende waarden:

1) john - man
2) anita - vrouw
3) piet - man
4) jan - man
5) linda - vrouw
6) henkie - man

Er zijn dus meer mannen dan vrouwen, hoe vraag ik dat op met SQL...
Ik wil dus met een SQL statement te zien krijgen: "man"...

Danke voor lezen
groetjes van BMWHeaven

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

count en group by zijn de termen die je nodig hebt :)

[ Voor 60% gewijzigd door gorgi_19 op 03-05-2003 17:02 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • BMWHeaven
  • Registratie: Juli 2002
  • Laatst online: 21-08 11:35
Zou je een beetje specifieker willen zijn :)....
bedankt voor je snelle reply

  • 3o3
  • Registratie: Oktober 2001
  • Laatst online: 30-07-2006

3o3

jep...
[ select count(*) from tabelltje where kolom2='man' ]

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

BMWHeaven schreef op 03 May 2003 @ 17:04:
Zou je een beetje specifieker willen zijn :)....
bedankt voor je snelle reply
Ja hoor. :)

Voor de count-functie: zie http://www.w3schools.com/sql/sql_count.asp
Voor de Group by : zie http://www.w3schools.com/sql/sql_groupby.asp

:)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • BMWHeaven
  • Registratie: Juli 2002
  • Laatst online: 21-08 11:35
Reply op 303: Maar dat wil ik niet, ik wil dat het sql statement zelf kan zien waar de meeste van zijn, en dan ook nog aangeeft welk geslacht het meest voorkomt....

Reply op gorigi_19: Ik zal er eens naar kijken, dankje :)

[ Voor 20% gewijzigd door BMWHeaven op 03-05-2003 17:08 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

3o3 schreef op 03 May 2003 @ 17:05:
jep...
[ select count(*) from tabelltje where kolom2='man' ]
Die klopt niet.. :) Zo tel je het aantal mannen. Je moet helemaal geen where clausule hebben. De group by clausule heb je wel nodig

BMWHeaven: Doe zo eens een poging als je er niet uitkomt. Ik wil je iig wel een schopje in de goede richting helpen. :P

Alleen direct het antwoord leer je op zich niet zo veel van. :)

[ Voor 29% gewijzigd door gorgi_19 op 03-05-2003 17:10 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • BMWHeaven
  • Registratie: Juli 2002
  • Laatst online: 21-08 11:35
danke, ik heb al wat dingen geprobeerd, ik laat je wel wat weten :)

  • 3o3
  • Registratie: Oktober 2001
  • Laatst online: 30-07-2006

3o3

oh, ja klopt, hij wil dus niet aantal maar welk geslacht meer leden heeft, right?

  • BMWHeaven
  • Registratie: Juli 2002
  • Laatst online: 21-08 11:35
right :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

3o3 schreef op 03 mei 2003 @ 17:11:
oh, ja klopt, hij wil dus niet aantal maar welk geslacht meer leden heeft, right?
Om het niet helemaal voor de TS voor te zeggen.. :P

Hij wil dus de aantallen hebben, gegroupeerd op de kolom geslacht.

* gorgi_19 is benieuwd wat BMWHeaven aan statement heeft bedacht.

[ Voor 11% gewijzigd door gorgi_19 op 03-05-2003 17:12 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-08 13:41
3o3 schreef op 03 mei 2003 @ 17:11:
oh, ja klopt, hij wil dus niet aantal maar welk geslacht meer leden heeft, right?
daar heb je het aantal voor nodig en dat vergelijk je dan :)

|>


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
BMWHeaven schreef op 03 mei 2003 @ 17:04:
Zou je een beetje specifieker willen zijn :)....
bedankt voor je snelle reply
Zie de manuals/tutorials die gorgi gepost heeft. Als je zelf een beetje moeite doet om iets te lezen/leren, kom je er wel. :)

Ik zie net dat je nieuw bent hier; welkom. :)
Echter, P&W is niet het forum waar men je graag bij het handje houd. Als je dus een tip/hint krijgt ala die post van gorgi_19, dan moet je gewoon eens zoeken op google op die keywords, of neem je er eens een tutorial / manual bij waarin je die keywords eens gaat opzoeken.

succes.

[ Voor 34% gewijzigd door whoami op 03-05-2003 17:16 ]

https://fgheysels.github.io/


  • BMWHeaven
  • Registratie: Juli 2002
  • Laatst online: 21-08 11:35
Ik was ook van plan om te gaan zoeken, een handje heb ik niet echt nodig, dat lukt me zelf ook nog, maar een schop in de goeie richting is gewoon aardig... :)
Ik snap heus wel waarom je zoiets post, maar ik ben al jaren actief (en soms ook wat minder actief op codeguru / codeproject / etc...)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

BMWHeaven schreef op 03 mei 2003 @ 17:18:
Ik was ook van plan om te gaan zoeken, een handje heb ik niet echt nodig, dat lukt me zelf ook nog, maar een schop in de goeie richting is gewoon aardig... :)
Ik snap heus wel waarom je zoiets post, maar ik ben al jaren actief (en soms ook wat minder actief op codeguru / codeproject / etc...)
Da's mooi, dan denk ik dat je wel een aardig eind in de goede richting komt. :)

Post je je antwoord nog even als je hem gevonden hebt? Mocht iemand later namelijk hetzelfde probleem tegen komen, dan ziet hij ook het antwoord. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • N8w8
  • Registratie: Mei 2000
  • Niet online
code:
1
2
3
4
SELECT bla
blabla
bla
blaaat

(sorry gorgi_19)

[ Voor 69% gewijzigd door N8w8 op 03-05-2003 17:32 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

En wat leert de topicstarter hier van?

Bedoeling was juist om BMWHeaven zelf te laten puzzelen, zodat hij er wat van leert en niet een kant en klaar antwoord voorgeschoteld krijgt. :)

[ Voor 41% gewijzigd door gorgi_19 op 03-05-2003 17:27 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • BMWHeaven
  • Registratie: Juli 2002
  • Laatst online: 21-08 11:35
Ik heb wat geprobeerd, en ben op dit uitgekomen, maar het werkt niet, wat is er nog fout?

SELECT naam, count(geslacht) AS aantal FROM mensen GROUP BY geslacht HAVING aantal=MAX(aantal)

ps Dit is niet de echte db indeling, alleen maar ff een voorbeeld :)

[ Voor 18% gewijzigd door BMWHeaven op 03-05-2003 17:33 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

BMWHeaven schreef op 03 May 2003 @ 17:30:
Ik heb echt geen idee of hier iets van klopt, maar dit heb ik tot nu toe:

SQL:
1
2
3
4
5
6
7
8
9
SELECT 
    naam, 
    count(geslacht) AS aantal 
FROM 
    mensen 
GROUP BY 
    geslacht 
HAVING 
    aantal=MAX(aantal)


ps Dit is niet de echte db indeling, alleen maar ff een voorbeeld :)
Ik heb even [code=sql][/code] tags rondom je code gezet, maakt het wat duidelijker..

Of deze werkt, geen idee. Ik betwijfel het; je wilt namelijk de namen tellen, gegroupeerd op geslacht (dus Select geslacht, count(naam) as aantal)

Afgezien daarvan zou het moeten werken, maar dat kan je zelf uittesten :)

Maar je hebt sowieso nog een andere mogelijkheid. Als je hem sorteert op aantal en dan de bovenste waarde neemt, ben je er ook.

Voor Access / SQL Server, niet getest:
SQL:
1
2
3
4
5
6
7
8
9
Select Top 1 
    Geslacht, 
    count(Naam) as aantal 
FROM 
    mensen
Group BY
    geslacht
Order BY
    2

MySQL heeft de limit-functie; ik weet niet of deze Top kent.
Ik heb wat geprobeerd, en ben op dit uitgekomen, maar het werkt niet, wat is er nog fout?
Wat is er fout kunnen we hier normaliter niet zo veel mee. Het enige wat we je dan kunnen vertellen is dat er iets fout gaat. Kan je iets exacter omschrijven wat er fout gaat? Welke foutmelding geeft hij? Of, als hij wel wat doet, wat doet het dan verkeerd? Dat maakt het een stuk eenvoudiger om een probleem te vinden. :)

[ Voor 29% gewijzigd door gorgi_19 op 03-05-2003 17:43 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
BMWHeaven schreef op 03 May 2003 @ 17:30:
Ik heb wat geprobeerd, en ben op dit uitgekomen, maar het werkt niet, wat is er nog fout?

SELECT naam, count(geslacht) AS aantal FROM mensen GROUP BY geslacht HAVING aantal=MAX(aantal)

ps Dit is niet de echte db indeling, alleen maar ff een voorbeeld :)
Je moet groeperen op de kolommen die in je select-list staan, maar geen deel uit maken van een aggregated function.
In dit geval dus op naam, en niet op geslacht.
Daarnaast is die
code:
1
HAVING aantal = MAX(aantal)

ook niet echt goed....
Om je output te beperken tot de rij met de hoogste waarde moet je eens naar gorgi_19's post kijken over dat sorteren en LIMIT'en of TOP'en.

[ Voor 11% gewijzigd door whoami op 03-05-2003 17:38 ]

https://fgheysels.github.io/


  • BMWHeaven
  • Registratie: Juli 2002
  • Laatst online: 21-08 11:35
Nou mensen, ik heb em gevonden (met de hulp van jullie natuurlijk :)):

SELECT TOP 1 geslacht, count(naam) AS aantal
FROM mensen
GROUP BY geslacht
ORDER BY 2 DESC;

Bedankt voor jullie hulp,
groetjes BMWHeaven
Pagina: 1