SQL w MS Access, problem z porządkowaniem po aliasie

0

Witam.
Raczkuję sobie właśnie w SQL-u, a dokładniej w jego odmianie pod MS Access. Realizowałem sobie bazodanowe zadanie z rozszerzonej matury z infy z 2010 i natrafiłem na problem, którego nie mogę zrozumieć. Mam następujący kod SQL kwerendy:

SELECT 
    Przedmioty.NazwaPrzedmiotu AS [Przedmiot],
    ROUND(AVG(Oceny.Ocena), 2) AS [Średnia] 
FROM 
    Przedmioty INNER JOIN Oceny ON Przedmioty.IDprzedmiotu = Oceny.IDprzedmiotu
WHERE 
    (Oceny.IdUcznia BETWEEN 149 AND 179) 
GROUP BY 
    Przedmioty.NazwaPrzedmiotu
ORDER BY 
    ROUND(AVG(Oceny.Ocena), 2) DESC;

No i on mi działa, pokazuje w wyniku przedmioty i odpowiadające im średnie.
Jednak brzydko wyglądało mi to powtórzenie ROUND(AVG(Oceny.Ocena), 2) na końcu i chciałem zapisać to w ten sposób:

SELECT 
    Przedmioty.NazwaPrzedmiotu AS [Przedmiot],
    ROUND(AVG(Oceny.Ocena), 2) AS [Średnia] 
FROM 
    Przedmioty INNER JOIN Oceny ON Przedmioty.IDprzedmiotu = Oceny.IDprzedmiotu
WHERE 
    (Oceny.IdUcznia BETWEEN 149 AND 179) 
GROUP BY 
    Przedmioty.NazwaPrzedmiotu
ORDER BY 
    [Średnia] DESC;

Ale w wyniku tego otrzymuję okno wprowadzani parametru Średnia.
Mógłby mi ktoś wytłumaczyć, dlaczego tak jest i jak to działa? Czemu nie mogę użyć aliasu jako argumentu dla ORDER BY?

To moje pierwsze kroki w SQL'u, ale że nie znalazłem satysfakcjonującego tutoriala krok-po-kroku, to po prostu czytam dokumentację http://office.microsoft.com/pl-pl/access-help i staram się rozwiązywać zadania, więc podejrzewam, że to kwestia braku zrozumienia czegoś u podstaw.

Z góry dzięki za pomoc bądź odesłanie do czegoś, co mógłbym sobie RTFM-ować.

0

Parametry podaje się w nawiasach kwadratowych, po prostu usuń nawiasy z klauzuli GROUP BY.
BTW unikaj używania polskich znaków w nazwach kolumn/aliasach.

miało być 'po prostu usuń nawiasy z klauzuli >>ORDER BY<<'

0

Dzięki za odpowiedź, ale zarówno

SELECT Przedmioty.NazwaPrzedmiotu AS Przedmiot, ROUND(AVG(Oceny.Ocena), 2) AS [Srednia]
FROM Przedmioty INNER JOIN Oceny ON Przedmioty.IDprzedmiotu = Oceny.IDprzedmiotu
WHERE (Oceny.IdUcznia BETWEEN 149 AND 179)
GROUP BY Przedmioty.NazwaPrzedmiotu
ORDER BY Srednia DESC; 

jak i

SELECT Przedmioty.NazwaPrzedmiotu AS Przedmiot, ROUND(AVG(Oceny.Ocena), 2) AS Srednia
FROM Przedmioty INNER JOIN Oceny ON Przedmioty.IDprzedmiotu = Oceny.IDprzedmiotu
WHERE (Oceny.IdUcznia BETWEEN 149 AND 179)
GROUP BY Przedmioty.NazwaPrzedmiotu
ORDER BY Srednia DESC;

zachowują się taks samo jak poprzedni kod.

2

ORDER BY 2 DESC;

0

Ok, działa.
Liczba podana po ORDER BY określa który parametr z SELECT używamy do sortowania, dobrze wnioskuję?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0