Dlaczego podzapytanie bez group by nie zadziała

0

Dlaczego te podzapytanie bez group by nie zadziała? Chcę wydobyć z tabeli nazwiska i sumę ich zarobków:

SELECT nazwisko, sum(pensja + premia) AS Zarobki
FROM pracownik
GROUP BY nazwisko
2

to jest pytanie w stylu dlaczego 2+2=4 - tak jest to zrobione i koniec. Jeśli masz użytą funkcję agregującą w zapytaniu to wszystkie pola nie użyte w funkcjach agregujących muszą być wymienione po GROUP BY (nie dotyczy mysql. BTW większość rzeczy nie dotyczy mysql...)

0

Ale dlaczego tak musi być? Bo np. w mysql mówisz że nie trzeba grupować.

0

Silnik musi "wiedzieć" po czym sumuje. To zadziała bez group by jak będziesz miał tylko funcje agregujące w selectcie. Oczywiście można się spierać że group by jest niepotrzebny, ale silnik bazy nie ma myśleć za operatora tylko dostać jednoznaczne instrukcje...

2
Świetny Młot napisał(a):

Ale dlaczego tak musi być?

Bo ktoś tak sobie to wymyślił. To się nazywa standard. Tak samo jak np. ktoś sobie wymyślił, że w c++ porównanie to == a nie np (=)

Bo np. w mysql mówisz że nie trzeba grupować.

bo mysql to nie baza danych tylko jakaś popierdółka, która ze standardem ma niewiele wspólnego

@szweszwe
Standard wymaga aby były i większość baz się tego trzyma. BTW proszę nie podawać dokumentacji mysqla bo on NIE TRZYMA STANDARDU! Jak już to http://dev.cs.uni-magdeburg.de/db/sybase9/help/dbugen9/00000284.htm

Na świecie jest wiele innych baz poza mysqlem

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