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

Жалпы таблицалык туюнтмалар (WITH)

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

Жалпы таблицалык туюнтмалар (WITH)

Суроонун куруу блогуна ат бериңиз да, SQLди рецепт сыяктуу үстүнөн ылдый окуңуз

Негизги идея: Жалпы таблицалык туюнтма (CTE) — бул инструкциянын башында WITH ачкыч сөзү менен аныкталган убактылуу аталыш алган натыйжа топтому. Ички суроону башка суроонун ичине терең катканын ордуна, ага бир жолу ат берип, кийин ошол атты кадимки таблица сыяктуу колдоносуз. Бир инструкция бир нече CTE аныктай алат, ар бир кийинкиси мурункуларына таяна алат — ушул менен чырмалышкан кашаалар уясы ачык, иреттелген конвейерге айланат.
Теманын аягында сиз муну кыла аласыз:
  • WITH name AS (SELECT ...) аркылуу бир CTE аныктап, ага кайрылуу,
  • бир нече CTEни окула турган көп кадамдуу конвейерге бириктирүү,
  • эмне үчүн CTE ошол эле логиканы ички суроодон окуу оңой экенин түшүндүрүү,
  • бир CTEге экинчисинен жана акыркы суроодон кайрылуу,
  • көрүнүү аймагынын эрежелерин айтуу: CTE канча жашайт жана аны эмне көрөт.

0. Биздин мисал таблица

Бул беттеги ар бир суроо sales деген бир кичине таблицаны колдонот. Анда сатылган ар бир китепке бир сап: сатуучу, анын региону, аталышы жана сатуу суммасы долларда. Ал мындай түзүлүп, толтурулат:

CREATE TABLE sales (
    id      INT PRIMARY KEY,
    seller  VARCHAR(30),
    region  VARCHAR(20),
    book    VARCHAR(30),
    amount  INT
);

INSERT INTO sales (id, seller, region, book, amount) VALUES
(1, 'Ann', 'North', 'SQL Basics',  40),
(2, 'Ann', 'North', 'Joins Deep',  55),
(3, 'Bo',  'North', 'SQL Basics',  40),
(4, 'Cy',  'South', 'Indexes 101', 30),
(5, 'Cy',  'South', 'SQL Basics',  40),
(6, 'Di',  'East',  'Joins Deep',  55),
(7, 'Di',  'East',  'Indexes 101', 30),
(8, 'Ann', 'North', 'Indexes 101', 30);

Бүт таблица мындай көрүнөт:

id seller region book amount
1AnnNorthSQL Basics40
2AnnNorthJoins Deep55
3BoNorthSQL Basics40
4CySouthIndexes 10130
5CySouthSQL Basics40
6DiEastJoins Deep55
7DiEastIndexes 10130
8AnnNorthIndexes 10130

Бул сандарды эсиңизде тутуңуз. Үч регион боюнча жыйынтык: North = 165 (1, 2, 3, 8-саптар), South = 70 (4, 5-саптар) жана East = 85 (6, 7-саптар). Бул жыйынтыктарды жакында CTE менен эсептейбиз.

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

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

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

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