[MySQL] aantal buiten de GROUP BY

Pagina: 1
Acties:

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Ik heb een query, waarin ik GROUP BY gebruik. Is het ook mogelijk om het aantal dat niet in de groep valt te tellen met een variant op COUNT?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 18 maart 2002 11:51 schreef Graveheart het volgende:
Ik heb een query, waarin ik GROUP BY gebruik. Is het ook mogelijk om het aantal dat niet in de groep valt te tellen met een variant op COUNT?
Ehh.. zodra je GROUP BY doet zit ALLES in een group.

Als is het item het enige IN zijn eigen group maar zit nog steeds in een group.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Ik bedoel het aantal buiten de huidige groep.

Zeg maar eh: totaal_aantal_regels - regels_binnen_groep

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Eh, anders misschien, weer iemand hoe ik het totaal aantal regels tel. Een COUNT ofzo, die zich dus niets aan trekt van GROUP BY

Verwijderd

gebruik een aparte query

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

ALs jij een count gebruikt icm een group by, dan zal de count de records tellen die binnen 1 groep vallen. Als je nu die hele kolom bij elkaar opteld heb je toch alle records??? Ik snap je probleem eigenlijk niet helemaal...

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


  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op maandag 18 maart 2002 11:51 schreef Graveheart het volgende:

Ik heb een query, waarin ik GROUP BY gebruik. Is het ook mogelijk om het aantal dat niet in de groep valt te tellen met een variant op COUNT?
Als je nu eerst de query zonder GROUP BY uitvoert, en hiervan het aantal resultaten aftrekt van de query met de GROUP BY is het gewenste resultaat bereikt lijkt me.

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Op maandag 18 maart 2002 12:19 schreef Janoz het volgende:
ALs jij een count gebruikt icm een group by, dan zal de count de records tellen die binnen 1 groep vallen. Als je nu die hele kolom bij elkaar opteld heb je toch alle records??? Ik snap je probleem eigenlijk niet helemaal...
Ja, dat klopt idd dat je het totaal hebt als je die kolom bij elkaar optelt, maar eh, hoe laat ik dat netjes door SQL doen?

Ik wil zeg maar als output hebben:

1 5 17
2 3 17
3 6 17
4 2 17
5 1 17

waarin de eerste colom het id van de groep is, tweede het aantal regels binnen die groep en het laatste het totaal aantal regels.

Verwijderd

is na mijn weten niet mogelijk in mysql.
gebruik gewoon een aparte count query, dat is hoogst waarschijnlijk toch nog sneller dan een mogelijke work-around methode die dit zou moeten weergeven in mysql (zou alleen nie weten hoe, ben wel benieuwd of iemand het kan) :)

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Op maandag 18 maart 2002 12:40 schreef woeitje het volgende:
is na mijn weten niet mogelijk in mysql.
gebruik gewoon een aparte count query, dat is hoogst waarschijnlijk toch nog sneller dan een mogelijke work-around methode die dit zou moeten weergeven in mysql (zou alleen nie weten hoe, ben wel benieuwd of iemand het kan) :)
Okay thanx, het ging me ook allemaal om snelheid.

Het script dat ik gebuik is al een beetje ingewikkeld, en het wordt nog wat ingewikkelder als ik nog een apparte query moet maken.

Als iemand er toch nog achter komt hoe het moet: graag :)

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

Goodielover

Only The Best is Good Enough.

De enige mogelijkheid die ik zie is alleen geldig voor een vast aantal groepen:
code:
1
2
3
4
5
6
7
select sum(iff(groep_id=&&par_groep1,1,0))
    ,sum(iff(groep_id=&&par_groep2,1,0))
    ,sum(iff(groep_id=&&par_groep3,1,0))
    ,sum(iff(groep_id=&&par_groep4,1,0))
    ,sum(iff(groep_id=&&par_groep5,1,0))
    ,count(*)
from   tabel

Misschien dat dit toch nog iets helpt.

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Op maandag 18 maart 2002 15:02 schreef Goodielover het volgende:
De enige mogelijkheid die ik zie is alleen geldig voor een vast aantal groepen:
code:
1
2
3
4
5
6
7
select sum(iff(groep_id=&&par_groep1,1,0))
    ,sum(iff(groep_id=&&par_groep2,1,0))
    ,sum(iff(groep_id=&&par_groep3,1,0))
    ,sum(iff(groep_id=&&par_groep4,1,0))
    ,sum(iff(groep_id=&&par_groep5,1,0))
    ,count(*)
from   tabel

Misschien dat dit toch nog iets helpt.
Hmm, nee dat gaat niet lukken, maar thanx anyways.

  • thijsc
  • Registratie: Augustus 2000
  • Laatst online: 22-12-2023
Daarvoor bestaat de functie 'having' in SQL.

In de docs van mysql staat ie niet. Dus het lijkt erop dat dit ook bij de groep functies hoort die mysql niet ondersteunt.

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

Goodielover

Only The Best is Good Enough.

De HAVING functie biedt hier helemaal geen soelaas.
Een HAVING gebruik je alleen om op de geaggregeerde resultaten nog een beperking/selectie uit te voeren.
Pagina: 1