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

Өнүккөн топтоо: ROLLUP, CUBE жана маалыматты буруу

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

Өнүккөн топтоо: ROLLUP, CUBE жана маалыматты буруу

Жалпак деталдуу сурамды аралык жыйынтыктары, жалпы жыйынтыгы жана бир караганда окулган мамычалары бар отчётко айландырыңыз

Негизги идея: Кадимки GROUP BY ар бир топко бир сап берет жана андан башка эч нерсе бербейт. Чыныгы отчётторго дагы аралык жыйынтыктар, жалпы жыйынтык жана көбүнчө категориялар үстү жагында мамыча катары жайгашкан маалымат керек. ROLLUP жана CUBE кошумча супер-агрегат саптарын бир өтүүдө түзөт, GROUPING() аларды айырмалоого жол берет, ал эми шарттуу агрегация (SUM(CASE ...)) саптарды мамычаларга бурат. Бул сабакта төрт ыкма тең бириктирилет.
Сабактын аягында сиз:
  • GROUP BY ... WITH ROLLUP аркылуу аралык жана жалпы жыйынтык саптарын кошо аласыз,
  • чыныгы NULL менен жыйынтык маркерин айырмалоо жана саптарды белгилөө үчүн GROUPING() колдоно аласыз,
  • көп өлчөмдүү жыйынтыктар жөнүндө ой жүгүртүп, ROLLUP та мамычалардын тартиби эмне үчүн маанилүү экенин түшүнөсүз,
  • диалект колдогон жерде CUBE / GROUPING SETS аркылуу толук кайчылаш таблица аласыз жана аны MySQL те эмуляциялайсыз,
  • шарттуу агрегация менен саптарды мамычаларга бура аласыз.

1. Биздин үлгү схема

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

CREATE TABLE sales (
    id       INT PRIMARY KEY,
    region   VARCHAR(20),
    product  VARCHAR(20),
    quarter  VARCHAR(2),
    amount   DECIMAL(10,2)
);

INSERT INTO sales (id, region, product, quarter, amount) VALUES
    (1, 'North', 'Widget', 'Q1', 100),
    (2, 'North', 'Gadget', 'Q1', 150),
    (3, 'North', 'Widget', 'Q2', 120),
    (4, 'South', 'Widget', 'Q1',  90),
    (5, 'South', 'Gadget', 'Q1',  70),
    (6, 'South', 'Gadget', 'Q2', 110),
    (7, 'North', 'Gadget', 'Q2', 130),
    (8, 'South', 'Widget', 'Q2',  80);

Баштапкы саптар:

idregionproductquarteramount
1NorthWidgetQ1100
2NorthGadgetQ1150
3NorthWidgetQ2120
4SouthWidgetQ190
5SouthGadgetQ170
6SouthGadgetQ2110
7NorthGadgetQ2130
8SouthWidgetQ280

Жалпы сатуу 850 ге барабар. Бул санды эстеп калыңыз: төмөндөгү ар бир ROLLUP жана CUBE тин жалпы жыйынтыгы дал ушуну кайра чыгарууга тийиш.

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

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

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

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