SQL pod zapytania

0

mam taki fragment kodu, zwraca on drugą maksymalną cenę pierwsza jest 81 a druga 53
tabela dbo.Produkty

74.jpg

SELECT COUNT(DISTINCT [Cena katalogowa])
FROM dbo.Produkty 
WHERE [Cena katalogowa] > 53

potem napisane jest że 53 trzeba odczytywać z tabeli
i dają coś takiego

SELECT Z.[Nazwa produktu], Z.[Cena katalogowa]
FROM dbo.Produkty AS Z
WHERE 1 =
	(SELECT COUNT(DISTINCT W.[Cena katalogowa])
	FROM dbo.Produkty AS W
	WHERE W.[Cena katalogowa] > Z.[Cena katalogowa]);

i tu nie rozumiem jak to działa zwłaszcza to porównywanie WHERE
WHERE W.[Cena katalogowa] > Z.[Cena katalogowa]) w zasadzie porównuje ceny z tej samej tabeli
nie wiem na jakiej zasadzie on dochodzi że 53 jest poprawne

dodanie znaczników <code class="sql"> oraz zdjęć do posta - fp

0

prosto mówiąc: pobiera taki produkt dla którego liczba produktów z wyższą ceną (W.cena > Z.cena) jest dokładnie równa 1

czyli jeśli ma być dokładnie jeden droższy produkt to pobrany zostanie drugi najdroższy
podmieniając "1" na "2" powinieneś dostać trzeci najdroższy produkt

dla każdego produktu (Z) wykonywane jest podzapytanie podstawiając cenę aktualnego produktu i porównując z każdym innym elementem w bazie (W), potem odrzucane są jednakowe wartości (DISTINCT) i zliczana ich ilość (COUNT) - imo strasznie nieefektywne zapytanie, ale nie czepiam się bo nawet nie wiem co to za dbms

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