WITH en_cok_satilan_tatlilar AS ( SELECT ROW_NUMBER() OVER (ORDER BY s.toplam_adet DESC) as sira, s.tatli_id, t.tatli_adi, s.toplam_adet, t.adet_fiyat FROM ( SELECT f.tatli_id, SUM(f.adet)AS toplam_adet FROM fis f GROUP BY f.tatli_id ) s INNER JOIN tatli t ON t.tatli_id = s.tatli_id ), en_cok_satilan_tatlilar_3_tur AS ( SELECT sira,tatli_adi,adet_fiyat, 1 tur FROM en_cok_satilan_tatlilar e WHERE sira<=5 UNION ALL SELECT sira,tatli_adi,adet_fiyat, 2 tur FROM en_cok_satilan_tatlilar e WHERE sira<=5 UNION ALL SELECT sira,tatli_adi,adet_fiyat, 3 tur FROM en_cok_satilan_tatlilar e WHERE sira<=5 ), kumulatif_toplamli AS ( SELECT ROW_NUMBER() OVER (ORDER BY tur, sira) AS genel_sira, a.adet_fiyat, SUM(adet_fiyat) OVER (ORDER BY tur,sira) as kumulatif_toplam, a.tur|| ' adet ' ||a.tatli_adi as tabak_adet, a.tur,a.tatli_adi FROM en_cok_satilan_tatlilar_3_tur a ) --SELECT * FROM kumulatif_toplamli SELECT '30 TL''lik Tabak: ' AS tabak, LISTAGG(tabak_adet,',') WITHIN GROUP (ORDER BY tur DESC, genel_sira ASC) AS tabak_icerigi, fis_tutari FROM ( SELECT tabak_adet,tur,genel_sira,kumulatif_toplam, ROW_NUMBER() OVER (ORDER BY genel_sira desc) son_5, FIRST_VALUE(kumulatif_toplam) OVER (ORDER BY kumulatif_toplam DESC) as fis_tutari FROM kumulatif_toplamli a WHERE kumulatif_toplam <=30 ) WHERE son_5 <= 5 GROUP BY fis_tutari UNION ALL SELECT '50 TL''lik Tabak: ' AS tabak, LISTAGG(tabak_adet,',') WITHIN GROUP (ORDER BY tur DESC, genel_sira ASC) AS tabak_icerigi, fis_tutari FROM ( SELECT tabak_adet,tur,genel_sira,kumulatif_toplam, ROW_NUMBER() OVER (ORDER BY genel_sira desc) son_5, FIRST_VALUE(kumulatif_toplam) OVER (ORDER BY kumulatif_toplam DESC) as fis_tutari FROM kumulatif_toplamli a WHERE kumulatif_toplam <=50 ) WHERE son_5 <= 5 GROUP BY fis_tutari UNION ALL SELECT '60 TL''lik Tabak: ' AS tabak, LISTAGG(tabak_adet,',') WITHIN GROUP (ORDER BY tur DESC, genel_sira ASC) AS tabak_icerigi, fis_tutari FROM ( SELECT tabak_adet,tur,genel_sira,kumulatif_toplam, ROW_NUMBER() OVER (ORDER BY genel_sira desc) son_5, FIRST_VALUE(kumulatif_toplam) OVER (ORDER BY kumulatif_toplam DESC) as fis_tutari FROM kumulatif_toplamli a WHERE kumulatif_toplam <=60 ) WHERE son_5 <= 5 GROUP BY fis_tutari UNION ALL SELECT '80 TL''lik Tabak: ' AS tabak, LISTAGG(tabak_adet,',') WITHIN GROUP (ORDER BY tur DESC, genel_sira ASC) AS tabak_icerigi, fis_tutari FROM ( SELECT tabak_adet,tur,genel_sira,kumulatif_toplam, ROW_NUMBER() OVER (ORDER BY genel_sira desc) son_5, FIRST_VALUE(kumulatif_toplam) OVER (ORDER BY kumulatif_toplam DESC) as fis_tutari FROM kumulatif_toplamli a WHERE kumulatif_toplam <=80 ) WHERE son_5 <= 5 GROUP BY fis_tutari UNION ALL SELECT '120 TL''lik Tabak: ' AS tabak, LISTAGG(tabak_adet,',') WITHIN GROUP (ORDER BY tur DESC, genel_sira ASC) AS tabak_icerigi, fis_tutari FROM ( SELECT tabak_adet,tur,genel_sira,kumulatif_toplam, ROW_NUMBER() OVER (ORDER BY genel_sira desc) son_5, FIRST_VALUE(kumulatif_toplam) OVER (ORDER BY kumulatif_toplam DESC) as fis_tutari FROM kumulatif_toplamli a WHERE kumulatif_toplam <=120 ) WHERE son_5 <= 5 GROUP BY fis_tutari ORDER BY 3 ASC