Ik neem als voorbeeld even deze tabel:
Ik wil aflopend sorteren op value en vervolgens geen dubbele pid's hebben - die wil ik dus groeperen. In dit geval zou ik dus dit als resultaat willen zien:
Hierbij is dus het probleem dat ik een GROUP BY wil uitvoeren ná een ORDER BY, wat natuurlijk niet kan. Als ik even hier vanuit ga:
Een GROUP BY kan ik niet toevoegen omdat die vóór de ORDER BY moet komen. Een SELECT DISTINCT werkt niet zoals ik verwacht, de resultaten zijn dan in willekeurige volgorde. Een HAVING na de GROUP BY heeft geen zin omdat ik de oorspronkelijke values niet meer aanspreken (die zijn verwijderd door de GROUP BY). Een WHERE met een aggregate function werkt niet omdat hij dan de aggregate function niet wil uitvoeren omdat dan de GROUP BY nog niet is toegepast.
Volgens mij kijk ik er gewoon helemaal naast
maar wie kan me het verlichtende woord bieden?
--------------- | pid | value | --------------- | 1 | 30 | | 1 | 20 | | 1 | 10 | | 2 | 25 | | 2 | 15 | | 2 | 35 | | 3 | 30 | | 3 | 50 | ---------------
Ik wil aflopend sorteren op value en vervolgens geen dubbele pid's hebben - die wil ik dus groeperen. In dit geval zou ik dus dit als resultaat willen zien:
--------------- | pid | value | --------------- | 3 | 50 | | 2 | 35 | | 1 | 30 | ---------------
Hierbij is dus het probleem dat ik een GROUP BY wil uitvoeren ná een ORDER BY, wat natuurlijk niet kan. Als ik even hier vanuit ga:
SQL:
1
2
3
| SELECT pid FROM tabel ORDER BY value DESC |
Een GROUP BY kan ik niet toevoegen omdat die vóór de ORDER BY moet komen. Een SELECT DISTINCT werkt niet zoals ik verwacht, de resultaten zijn dan in willekeurige volgorde. Een HAVING na de GROUP BY heeft geen zin omdat ik de oorspronkelijke values niet meer aanspreken (die zijn verwijderd door de GROUP BY). Een WHERE met een aggregate function werkt niet omdat hij dan de aggregate function niet wil uitvoeren omdat dan de GROUP BY nog niet is toegepast.
Volgens mij kijk ik er gewoon helemaal naast

ifconfig eth0 down