ORDER BY -> Sortiert nach Spalte(n) wobei ASC, DESC die Sortierreihenfolge festlegt.
Beispiel: ORDER BY Spalte1 DESC. Spalte2 ASC, Spalte 3
GRPUP BY -> Gruppiert nach Spalten - wie Du ja schon bemerkt hast und wird nötig wenn z.B. mehrere Tabellen mit einer Abfrage (JOIN) angesprochen und zusammengefügt werden, da dann einfach gesagt, eine neue Tabelle die jedes Feld aus Tabelle1 mit jedem aus Tabelle2 verknüpft und darstellt. Um dann aus ALLEN Varianten eine zielgerichtete Ergebnismenge zu bekommen, nutzt man GROUP BY um überflüssige einträge auszufiltern.
DISTINCT (ROW) -> liefert lediglich keine gleichen Spalten (Zeilen) zurück.