Asosiy matnga o'tish

144. Har guruhdan 2 ta (windowsiz)

Qiyin

Har bir kategoriyadagi eng qimmat 2 ta mahsulotni toping — lekin

window funksiyasiz va LATERAL siz.

Usul: har bir qator uchun "o'sha kategoriyada mendan qimmatroq nechta mahsulot

bor?" degan korrelyatsion COUNT ni hisoblang. Agar javob 2 dan kichik

bo'lsa, qator top-2 ga kiradi.

WHERE (SELECT COUNT(*) FROM products x
       WHERE x.category = p.category AND x.price > p.price) < 2

Narxlar teng bo'lsa ikkalasi ham chiqadi — shuning uchun ba'zi kategoriyada

2 tadan ko'proq qator bo'lishi mumkin.

Ustunlar: category, name, price.

Saralash: category alifbo, keyin price kamayish, keyin name alifbo.

products: id INT PK, category VARCHAR, name VARCHAR, price NUMERIC(12,2)

Namuna ma'lumotlar

sample
products
idINTcategoryVARCHAR(30)nameVARCHAR(60)priceNUMERIC(12,2)
9KitobDarslik120000
10KitobRoman85000
5KiyimKurtka890000
6KiyimKrossovka890000
7KiyimShim410000
Kutilgan natija
namepricecategory
Darslik120000Kitob
Roman85000Kitob
Krossovka890000Kiyim
Kurtka890000Kiyim
sample-full
products
idINTcategoryVARCHAR(30)nameVARCHAR(60)priceNUMERIC(12,2)
1ElektronikaNoutbuk 159800000
2ElektronikaTelevizor 434800000
3ElektronikaSmartfon A543900000
4ElektronikaQuloqchin450000
5KiyimKurtka890000
6KiyimKrossovka890000
7KiyimShim410000
8KiyimKo'ylak320000
9KitobDarslik120000
10KitobRoman85000
11SportYugurish yo'lakchasi7500000
12SportVelosiped1800000
13SportGantel350000
14KosmetikaKrem180000
Kutilgan natija
namepricecategory
Noutbuk 159800000Elektronika
Televizor 434800000Elektronika
Darslik120000Kitob
Roman85000Kitob
Krossovka890000Kiyim
Kurtka890000Kiyim
Krem180000Kosmetika
Yugurish yo'lakchasi7500000Sport
Velosiped1800000Sport
sample-extra
products
idINTcategoryVARCHAR(30)nameVARCHAR(60)priceNUMERIC(12,2)
1KiyimSmartfon A5485000
2SportTelevizor 431.99
3SportVelosiped5835400
4SportNoutbuk 156195400
5SportShim9825600
7KiyimRoman1344600
8KiyimQuloqchin8025400
Kutilgan natija
namepricecategory
Quloqchin8025400Kiyim
Roman1344600Kiyim
Shim9825600Sport
Noutbuk 156195400Sport

O'xshash masalalar

Konsol

Natijani ko'rish uchun so'rovni ishga tushiring.