Błąd w poleceniu

0

Witam,
Jest to mój pierwszy wpis na forum i na początek chciałbym prosić o pomoc w znalezieniu błędu w tym poleceniu:

SELECT ID, SN, MAX(M1,M2,M3) [MAX], ROUND(MAX((M1+M2+M3)/3.0),2) [MAX_AVG] FROM tests WHERE SN IN ( SELECT SN FROM ( SELECT SN FROM ( SELECT SN FROM tests GROUP BY SN HAVING COUNT(ID) >= 5) GROUP BY SN HAVING T >= 60 AND MIN(M1,M2,M3) >= MAX(M1,M2,M3)*0.9 ) GROUP BY SN HAVING MIN((M1+M2+M3)/3.0)>= 0.85*(MAX((M1+M2+M3)/3.0)) ) GROUP BY SN ORDER BY [MAX_AVG] DESC;

Po uruchomieniu pojawia się komunikat: "ERROR: misuse of aggregate: MAX()".

0

GROUP BY ID, SN ORDER BY [MAX_AVG] DESC
Ale to bez sensu...

1

To jakoś strasznie przekomplikowany in, analizując tylko podzapytanie:

SELECT 
	SN
FROM
	(SELECT
		SN
	FROM 
		(SELECT 
			SN
		FROM 
			tests
		GROUP BY 
			SN
		HAVING 
			COUNT(ID) >= 5
		)
	GROUP BY 
		SN
	HAVING 
		--w having piszemy zapytania do funkcji agregujących
		--skąd ma mieć informacje o T skoro nie masz go w źródłowej tabeli?
		T >= 60
		-- max w funkcji agregującej przyjmuje tylko jeden parametr, podzapytanie nie zwraca kolumn m1,m2,m3
		AND MIN(M1, M2, M3) >= MAX(M1, M2, M3) * 0.9
	)
GROUP BY 
	SN
HAVING 
	--jak w poprzednim warunku
	MIN((M1 + M2 + M3) / 3.0) >= 0.85 * (MAX((M1 + M2 + M3) / 3.0)
0

Nie zgodzę się z tym, że funkcja MAX przyjmuje tylko jedną wartość, ponieważ gdy napisałem małe polecenie:
SELECT ID, MAX(M1,M2,M3) FROM tests;
zwraca mi największą wartość z podanych kolumn w każdym wierszu.

Wiem, że w having piszemy funkcje agregujące, ale czy to wyklucza napisanie polecenia z HAVING T >= 60 zamiast WHERE T >= 60 ?

1

Nie zgodzę się z tym, że funkcja MAX przyjmuje tylko jedną wartość

Czytaj uważnie co napisałem max w funkcji agregującej

Czyli miałem na myśli: Aggregate Functions , ty natomiast opisujesz funkcje SQL: Core Functions

I jak pisze w dokumentacji:

Note that max() is a simple function when it has 2 or more arguments but operates as an aggregate function if given only a single argument

0

Okej. Rozumiem. Dziękuję za pomoc !

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