Терезе алкактары, 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_date | region | amount |
|---|---|---|
| 2024-03-01 | North | 100.00 |
| 2024-03-02 | North | 120.00 |
| 2024-03-03 | North | 90.00 |
| 2024-03-04 | North | 150.00 |
| 2024-03-05 | North | 130.00 |
Бул беш санды эсиңизде сактаңыз - 100, 120, 90, 150, 130 - анткени бул беттеги ар бир өсүп жаткан жыйынтык жана жылма орточо ушулардан курулган.