Avatar billede beef12 Nybegynder
31. maj 2004 - 23:51 Der er 4 kommentarer og
1 løsning

aggregat + group by

Hej SQL-eksperter,

Når man laver et aggregat (SUM,COUNT osv) i MySQL, fremkommer der ingen fejl hvis jeg undlader at bruge en GROUP BY i min sætning. Hvordan kan det være? Et det ikke en SQL-regel der siger at man altid SKAL anvende GROUP BY sammen med et aggregat.
Avatar billede arne_v Ekspert
01. juni 2004 - 07:26 #1
Nej.

Men selectede udtryk som ikke er et aggregat skal være i GROUP BY i standard SQL.

SELECT COUNT(*) FROM X er valid
SELECT Y,Z,COUNT(*) FROM X GROUP BY Y,Z er valid
SELECT Y,Z,COUNT(*) FROM X GROUP BY Z er ikke valid i standard SQL men kan bruges i MySQL

(den tager bare en tilfældig værdi for Y)
Avatar billede beef12 Nybegynder
01. juni 2004 - 09:51 #2
Ok, så det du siger er at man gruppere alle værdier som ikke er aggretater.

Smid et svar så du kan få dine point og hvis du gider må du meget gerne forklare kort hvorfor man grupperer ikke-aggretaterne.
Avatar billede arne_v Ekspert
01. juni 2004 - 10:42 #3
svar
Avatar billede arne_v Ekspert
01. juni 2004 - 10:45 #4
aggregater - udregnes for hver række i output
felter som er med i GROUP BY - hver unik kombination giver en række
felter som ikke er med i GROUP BY - kan have flere værdier for hver række d.v.s. er ikke unik (og det er lidt noget rod at tage en tilfældig af værdierne)
Avatar billede beef12 Nybegynder
01. juni 2004 - 18:22 #5
jamen det jo egentlig meget logisk :-) Tak for det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester