Мазмунга өтүү

Терезе алкактары, LAG/LEAD жана өсүп жаткан жыйынтыктар

Сабактын башталышы

Терезе алкактары, LAG/LEAD жана өсүп жаткан жыйынтыктар

Терезени сыдырылма кичи-терезеге айландырып, саптарды коңшулары менен салыштырыңыз

Негизги ой: Мурунку темада сиз ранктарды жана бөлүк боюнча агрегаттарды эсептөө үчүн OVER (PARTITION BY ... ORDER BY ...) кошконсуз. Алкак (frame) ошол терезени дагы да тарытат: ар бир сап үчүн ал саптардын жылма тилкесин аныктайт - "ушул жерге чейинки баары" же "ушул үч сап" - жана агрегат ушул тилке боюнча эсептелет. Дал ушул алкактар кадимки SUMди өсүп жаткан жыйынтыкка, ал эми кадимки AVGди жылма орточо кылат. Алкактар менен катар навигация функциялары LAG жана LEAD турат, алар сапка коңшуларын түз окууга мүмкүндүк берет.
Теманын аягында сиз төмөнкүлөрдү жасай аласыз:
  • ROWS BETWEEN 2 PRECEDING AND CURRENT ROW сыяктуу алкак сөз айкашын окуй,
  • ROWS, RANGE жана демейки алкактын айырмасын түшүндүрө,
  • өсүп жаткан жыйынтыктарды жана жылма орточолорду түзө,
  • LAG жана LEAD аркылуу сапты мурунку же кийинки менен салыштыра,
  • демейки алкактан келип чыккан классикалык LAST_VALUE тузагынан оолак боло аласыз.

1. Биз кайрыла турган мисал таблица

Төмөнкү ар бир суроо эки регион үчүн күнүмдүк сатуулардын бир кичине таблицасы боюнча иштейт. Ал атайын кичинекей кылынган, ошондуктан ар бир жыйынтыкты кол менен текшере аласыз.

CREATE TABLE daily_sales (
    sale_date DATE,
    region    VARCHAR(20),
    amount    DECIMAL(10,2)
);

INSERT INTO daily_sales (sale_date, region, amount) VALUES
    ('2024-03-01', 'North', 100),
    ('2024-03-02', 'North', 120),
    ('2024-03-03', 'North',  90),
    ('2024-03-04', 'North', 150),
    ('2024-03-05', 'North', 130),
    ('2024-03-01', 'South',  80),
    ('2024-03-02', 'South',  60),
    ('2024-03-03', 'South', 110),
    ('2024-03-04', 'South',  70),
    ('2024-03-05', 'South', 100);

North региондун саптары дата боюнча тартипте мындай көрүнөт:

sale_dateregionamount
2024-03-01North100.00
2024-03-02North120.00
2024-03-03North90.00
2024-03-04North150.00
2024-03-05North130.00

Бул беш санды эсиңизде сактаңыз - 100, 120, 90, 150, 130 - анткени бул беттеги ар бир өсүп жаткан жыйынтык жана жылма орточо ушулардан курулган.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө