144. Har guruhdan 2 ta (windowsiz)
QiyinAgregatsiyalarUzum
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) < 2Narxlar 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
| idINT | categoryVARCHAR(30) | nameVARCHAR(60) | priceNUMERIC(12,2) |
|---|---|---|---|
| 9 | Kitob | Darslik | 120000 |
| 10 | Kitob | Roman | 85000 |
| 5 | Kiyim | Kurtka | 890000 |
| 6 | Kiyim | Krossovka | 890000 |
| 7 | Kiyim | Shim | 410000 |
Kutilgan natija
| name | price | category |
|---|---|---|
| Darslik | 120000 | Kitob |
| Roman | 85000 | Kitob |
| Krossovka | 890000 | Kiyim |
| Kurtka | 890000 | Kiyim |
sample-full
products
| idINT | categoryVARCHAR(30) | nameVARCHAR(60) | priceNUMERIC(12,2) |
|---|---|---|---|
| 1 | Elektronika | Noutbuk 15 | 9800000 |
| 2 | Elektronika | Televizor 43 | 4800000 |
| 3 | Elektronika | Smartfon A54 | 3900000 |
| 4 | Elektronika | Quloqchin | 450000 |
| 5 | Kiyim | Kurtka | 890000 |
| 6 | Kiyim | Krossovka | 890000 |
| 7 | Kiyim | Shim | 410000 |
| 8 | Kiyim | Ko'ylak | 320000 |
| 9 | Kitob | Darslik | 120000 |
| 10 | Kitob | Roman | 85000 |
| 11 | Sport | Yugurish yo'lakchasi | 7500000 |
| 12 | Sport | Velosiped | 1800000 |
| 13 | Sport | Gantel | 350000 |
| 14 | Kosmetika | Krem | 180000 |
Kutilgan natija
| name | price | category |
|---|---|---|
| Noutbuk 15 | 9800000 | Elektronika |
| Televizor 43 | 4800000 | Elektronika |
| Darslik | 120000 | Kitob |
| Roman | 85000 | Kitob |
| Krossovka | 890000 | Kiyim |
| Kurtka | 890000 | Kiyim |
| Krem | 180000 | Kosmetika |
| Yugurish yo'lakchasi | 7500000 | Sport |
| Velosiped | 1800000 | Sport |
sample-extra
products
| idINT | categoryVARCHAR(30) | nameVARCHAR(60) | priceNUMERIC(12,2) |
|---|---|---|---|
| 1 | Kiyim | Smartfon A54 | 85000 |
| 2 | Sport | Televizor 43 | 1.99 |
| 3 | Sport | Velosiped | 5835400 |
| 4 | Sport | Noutbuk 15 | 6195400 |
| 5 | Sport | Shim | 9825600 |
| 7 | Kiyim | Roman | 1344600 |
| 8 | Kiyim | Quloqchin | 8025400 |
Kutilgan natija
| name | price | category |
|---|---|---|
| Quloqchin | 8025400 | Kiyim |
| Roman | 1344600 | Kiyim |
| Shim | 9825600 | Sport |
| Noutbuk 15 | 6195400 | Sport |
O'xshash masalalar
Konsol
Natijani ko'rish uchun so'rovni ishga tushiring.
