- Mesajlar
- 719
Merhaba arkadaşlar.okulum için geçen sene yapmış olduğum deneme sınav sonuçlarını açıklama sistemini geliştirme adına sayfamda güncelleme yapmak istedim.son 3 deneme sınavında düşüş yasayan öğrencileri tespit etmek icin bir sorgu yaptım .ama sorgu sürekli düşüş yaşayan öğrenciler ile birlikte düşüş sonrada yükseliş yaşayan öğrencileri de buluyor.pho konusunda bilgisi olan arkadaşlar yardımınıza ihtiyacım var.
Sondan 3.sinav> sondan 2.sinav>son sınav şeklinde olan öğrencileri bulmak istediğim kodlamam şu şekilde
SELECT sinifi, numarasi, adisoyadi
FROM (
SELECT
d1.sinifi,
d1.numarasi,
d1.adisoyadi,
d1.LGS AS current,
LAG(d1.LGS, 1) OVER (PARTITION BY d1.numarasi ORDER BY d1.sinavtarihi DESC) AS prev1,
LAG(d1.LGS, 2) OVER (PARTITION BY d1.numarasi ORDER BY d1.sinavtarihi DESC) AS prev2,
ROW_NUMBER() OVER (PARTITION BY d1.numarasi ORDER BY d1.sinavtarihi DESC) AS row_num
FROM tabloadi d1
) subquery
WHERE row_num <= 3
GROUP BY sinifi, numarasi, adisoyadi
HAVING COUNT(*) = 3
AND SUM(CASE WHEN current < prev1 THEN 1 ELSE 0 END) = 2
AND SUM(CASE WHEN prev1 < prev2 THEN 1 ELSE 0 END) = 1
";
Acaba nerde hata yapıyorum
Sondan 3.sinav> sondan 2.sinav>son sınav şeklinde olan öğrencileri bulmak istediğim kodlamam şu şekilde
SELECT sinifi, numarasi, adisoyadi
FROM (
SELECT
d1.sinifi,
d1.numarasi,
d1.adisoyadi,
d1.LGS AS current,
LAG(d1.LGS, 1) OVER (PARTITION BY d1.numarasi ORDER BY d1.sinavtarihi DESC) AS prev1,
LAG(d1.LGS, 2) OVER (PARTITION BY d1.numarasi ORDER BY d1.sinavtarihi DESC) AS prev2,
ROW_NUMBER() OVER (PARTITION BY d1.numarasi ORDER BY d1.sinavtarihi DESC) AS row_num
FROM tabloadi d1
) subquery
WHERE row_num <= 3
GROUP BY sinifi, numarasi, adisoyadi
HAVING COUNT(*) = 3
AND SUM(CASE WHEN current < prev1 THEN 1 ELSE 0 END) = 2
AND SUM(CASE WHEN prev1 < prev2 THEN 1 ELSE 0 END) = 1
";
Acaba nerde hata yapıyorum