7603

Поєднані набори даних

Лекция

Информатика, кибернетика и программирование

Поєднані набори даних Поєднаний набір даних являє собою вибірку з декількох джерел. Для його одержання служить та ж таки команда SELECT, більш розширений її варіант виглядає та...

Украинкский

2013-01-26

91 KB

1 чел.

PAGE  4

Об’єднані набори даних

        Об’єднаний набір даних являє собою вибірку з декількох джерел. Для його одержання служить та ж таки команда SELECT, більш розширений її варіант виглядає так:

SELECT [ALL | DISTINCT [ON (вираз [, ...])]] мета [AS альтернативне_імя] [, ...]

[INTO [ TEMPORARY | TEMP ] [ TABLE ] нова_таблиця ]

[FROM джерело [, | CROSS JOIN ...]]

[[NATURAL] тип_обєднання [ON умова_обєднання | USING (список_полів обєднання)]][, ...]

[WHERE умова відбору записів]

[GROUP BY критерій групування[, ...]]

[HAVING агрегатна умова [, ...]]

[{UNION | INTERSECT | EXCEPT} [ALL] підзапит]

[ORDER BY вираз [ASC | DESC | USING оператор] [, ...]]

[FOR UPDATE [OF таблиця [, ...]]]

[LIMIT {число | ALL} [{OFFSET |. } початок]]

        Тут:

        

  •  ALL – у вибірку включаються всі знайдені записи;
  •  DISTINCT [ON (вираз [, ...])]  – поле або вираз, значення якого повинні входити в підсумковий набір не більш одного разу. Ключове слово DISTINCT означає, що за наявності дублікатів у декількох записах до вибірки включиться тільки один запис. ALL означає, що у вибірку включаються всі записи незалежно від наявності дублікатів (використовується за замовчуванням). Ключове слово ON, наступне за словом DISTINCT, дозволяє задати один або декілька виразів;
  •  мета [AS альтернативне ім’я] [, ...] – в якості мети зазвичайно вказується ім’я поля джерела, хоча вона також може бути й константою, ідентифікатором, функцією або загальним виразом. Перелік мети розділяється комами. Скороченим позначенням усіх полів є зірочка (*), разом з нею в списку можуть бути присутні й інші цілі. Альтернативне ім’я використовується тут для посилань у секціях ORDER BY і GROUP BY. Однак, у секціях WHERE і HAVING повинні використовуватися справжні імена;
  •  FROM джерело [, ...] – джерело, з якого вибираються задані цілі, це імена таблиць або вкладеного запиту (підзапиту);
  •  CROSS JOIN – розділення перелічених джерел комами або словами CROSS JOIN;
  •  [NATURAL] тип_об’єднання [ON умова | USING (список полів)]. Джерела можуть групуватися залежно від типу об’єднання: [INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] | CROSS] JOIN. Ключове слово NATURAL означає, що об’єднання двох джерел проводиться за всіма однойменними полями. Його наявність виключає необхідність об’єднання за явно заданими умовами;
  •  умова_об’єднання аналогічна умові секції WHERE, вказується після ключового слова ON;
  •  WHERE умова – обмеження підсумкового набору заданим критерієм. Умова повинна повертати просте логічне значення (true або false), вона може складатися й з декількох внутрішніх умов, об’єднаних логічними операторами, такими, наприклад, як AND або OR;
  •  GROUP BY критерій [, ... ] –  групування записів за заданим критерієм, який може бути простим іменем поля або виразом;
  •  HAVING умова [, ... ]. Секція HAVING схожа на секцію WHERE, але умова перевіряється на рівні цілих груп, а не окремих записів;
  •  {UNION | INTERSECT | EXCEPT} [ALL] підзапит – виконання однієї з трьох операцій, в яких беруть участь два запити (основний і додатковий). Підсумкові дані повертаються у вигляді набору, з якого видаляються дублікати записів, якщо не було задано ключове слово ALL. Тут:
  •  UNION – злиття двох підсумкових наборів, які мають сумісну структуру, в один об’єднаний підсумковий набір,
  •  INTERSECT – з підсумкового набору виключаються всі записи, які не входять до підсумкового набіру наступного підзапиту (тобто результатом є перетин двох множин записів),
  •  EXCEPT – з підсумкового набору виключаються всі записи, які входять у підсумковий набір наступного підзапиту (тобто результатом є різниця двох множин записів). Підзапит являє собою повну команду SELECT. Якщо підзапит містить секції ORDER BY, FOR UPDATE і LIMIT, то він має бути обрамлений круглими дужками;
  •  ORDER BY вираз – сортування у полях, заданих виразом, за зростанням (ASC) або за спаданням (DESC). З ключовим словом USING може задаватися оператор, який визначає порядок сортування (наприклад, OR). Секція USING вказує оператор (наприклад >), який використовується в подальших порівняннях;
  •  FOR UPDATE [OF таблиця [, ... ]] – монопольне блокування типу ROW SHARE MODE записів зазначеної таблиці до завершення транзакції, якщо секція FROM містить декілька таблиць; 
  •  LIMIT {число | ALL} – обмеження максимального числа повернених записів або повернення всієї вибірки (ALL);
  •  OFFSET |. початок, тобто точка відліку записів. Наприклад, якщо в секції LIMIT встановлено обмеження в 100 записів, а в секції OFFSET стоїть число 50, то запит поверне записи з номерами від 50 до150 (якщо, звичайно, вони знайдуться). Ключове слово OFFSET може замінюватися комами після ключового слова LIMIT. Воно означає, що в підсумковому наборі ігнорується задана кількість записів.

 

        Зауважимо, що, крім вищеперелічених секцій, команда SELECT може мати й інші, такі, наприклад, як WINDOW і FETCH.

        З метою отримання більш наглядного запиту рекомендується явно перелічувати всі необхідні поля замість повної вибірки з символом *. Це особливо актуально при використанні секції JOIN, коли тих полів багато.  Тоді поля, включені в підсумковий набір, перераховуються після ключового слова SELECT. Запит повертає дані лише тих полів, які входять до цього списку. Порядок переліку полів не обовязково повинен збігатися з їх порядком у таблиці. Допускається як багаторазове входження, так і відсутність деяких полів у списку. Це показано в прикладі, де змінений порядок полів у вибірці, а дані поля naz_g виводяться двічі:

SELECT naz_g, kod_g, naz_g  FROM gazpr;

        Наведемо декілька прикладів запиту для видачі об’єднаних наборів даних.

  •  у нижченаведених 3 варіантах будуть видані назви газопроводів і відповідні їм кількості газу, де код підприємства дорівнює 2, тих записів, коди яких є в обох таблицях: gazpr та oblik (перетин множин). Результати будуть однакові. Варіант із секцією INNER JOIN вигідний тим, що дозволяє розділити умову об’єднання джерел від умови відбору записів. Варіанти 2, 3 вважаються застарілими:

  1.  SELECT gazpr.naz_g, oblik.kilk  AS kilkist, oblik.data FROM oblik INNER JOIN gazpr ON(oblik.kod_g  = gazpr.kod_g) WHERE oblik.kod_p=2;
    1.  SELECT gazpr.naz_g, oblik.kilk  AS kilkist, oblik.data FROM oblik CROSS JOIN gazpr WHERE gazpr.kod_g = oblik.kod_g AND oblik.kod_p=2;  
    2.  SELECT oblik.kod_g, gazpr.naz_g, kilk  AS kilkist, oblik.data FROM oblik, gazpr WHERE gazpr.kod_g = oblik.kod_g AND oblik.kod_p=2;

  •  підрахувати кількість днів, відпрацьованих кожним газопроводом у поточному році. У вибірку внести й назви тих газопроводів, які не працювали:

SELECT gazpr.naz_g AS nazva_g, count(oblik.kod_g) AS kil_day FROM oblik

RIGHT JOIN gazpr ON(oblik.kod_g = gazpr.kod_g)

WHERE extract(year from current_date) = extract(year from oblik.data)

GROUP BY gazpr.naz_g

ORDER BY gazpr.naz_g;

  •  виявити в таблиці oblik коди фантом-газопроводів, тобто відсутніх у таблиці gazpr, та кількість облікованого в них газу:

SELECT oblik.kod_g, sum(oblik.kilk) AS kilkist FROM oblik

FULL JOIN gazpr ON(oblik.kod_g = gazpr.kod_g)

WHERE gazpr.naz_g IS NULL

GROUP BY oblik.kod_g;

 

  •  видати підсумовану кількість транспортованого газу усіма газопроводами за весь період обліку. У вибірку внести назви лише тих газопроводів, які працювали:

SELECT gazpr.naz_g, sum(oblik.kilk)  AS kilkist FROM oblik

INNER JOIN gazpr ON(oblik.kod_g = gazpr.kod_g)

GROUP BY gazpr.naz_g;

  •  видати підсумовану кількість транспортованого газу усіма газопроводами за останні 5 років:

SELECT extract(year from oblik.data) AS rik, gazpr.naz_g, sum(oblik.kilk) AS kilkist FROM oblik

INNER JOIN gazpr ON(oblik.kod_g = gazpr.kod_g)

WHERE extract(year FROM current_date) - extract(year from oblik.data) <= 5

GROUP BY gazpr.naz_g, rik

ORDER BY rik ASC;

  •  видати підсумовану кількість транспортованого газу усіма газопроводами і підприємствами за поточний день поточного місяця поточного року:

SELECT oblik.kod_g, gazpr.naz_g, pidpr.naz_p, sum(oblik.kilk) AS kilkist FROM oblik

INNER JOIN gazpr ON(oblik.kod_g = gazpr.kod_g)

INNER JOIN pidpr ON(oblik.kod_p = pidpr.kod_p)

WHERE extract(day FROM current_date) = extract(day from oblik.data)

     AND extract(month FROM current_date) = extract(month from oblik.data)

     AND extract(year FROM current_date) = extract(year from oblik.data)

GROUP BY gazpr.naz_g, oblik.kod_g, pidpr.naz_p;

  •  обчислити преміальний фонд для персоналу тих 3-х газопроводів, які відтранспортували найбільшу кількість газу у поточному місяці поточного року. Преміальний фонд дорівнює сумарній кількості газу, помноженій на 1.6:

SELECT oblik.kod_g, gazpr.naz_g, sum(oblik.kilk)*1.6 AS premia FROM oblik

INNER JOIN gazpr ON(oblik.kod_g = gazpr.kod_g)

WHERE extract(month FROM current_date) = extract(month from oblik.data)

     AND extract(year FROM current_date) = extract(year from oblik.data)

GROUP BY gazpr.naz_g, oblik.kod_g

ORDER BY premia DESC

LIMIT 5;

  •  видати підсумовану кількість газу для всіх газопроводів за друге півріччя поточного року. Секцію CASE можна вважати аналогом вкладеної тренарної операції мовою C. Зауважимо, що секція WHERE не сприймає альтернативного імені pivrik, тому умову  відбору записів (секцію CASE) прийшлося дублювати:

SELECT gazpr.naz_g,

(CASE WHEN extract(month FROM oblik.data) < 7 THEN 1 ELSE 2 END) AS pivrik,

sum(oblik.kilk) AS kilkist

FROM oblik

INNER JOIN gazpr ON(oblik.kod_g = gazpr.kod_g)

WHERE ((CASE WHEN extract(month FROM oblik.data) < 7 THEN 1 ELSE 2 END) = 2

                                AND extract(year FROM current_date) = extract(year from oblik.data))          

GROUP BY gazpr.naz_g, pivrik

ORDER BY pivrik;

  •  видати підсумовану за кожні 20 років кількість транспортованого газу:

SELECT CASE WHEN extract(year FROM data) < 1990 THEN '1 група'

                          WHEN extract(year FROM data) > 1990

                             AND extract(year FROM data) < 2011 THEN '2 група'

               ELSE '3 група'

               END AS grupa, sum(kilk) AS kilkist FROM oblik

GROUP BY grupa

ORDER BY grupa;


 

А также другие работы, которые могут Вас заинтересовать

42770. Розрахунок фізичних властивостей вільного та супутнього вуглеводневих газів одного з родовищ України за їх компонентним складом 1.97 MB
  Процес експлуатації нафтових і газових свердловин вимагає виконання низки розрахунків фізичних властивостей компонентів, що видобуваються, які істотно залежать від термобаричних умов, за яких вони знаходяться.
42771. Технология производства и характеристики качества стального гнутого швеллера 100x80x3,0мм из стали марки Ст3пс 391.61 KB
  В наибольшей степени этим требованиям соответствуют стальные конструкции выполненные из холодногнутых профилей ХГП так как данный вид профилей обладает широкими конструктивными достоинствами: высокая точность размеров хорошее качество поверхности повышенное сопротивление различного рода нагрузкам обеспечивают преимущества холодногнутых профилей перед горячекатаными. Одной из разновидностью сортовых гнутых профилей является швеллер. Механические свойства гнутых профилей определяют на заготовке в соответствии с ГОСТ 16523[10]. На...
42772. ТРАНСПОРТНЫЙ НАЛОГ: ОБЩАЯ ХАРАКТЕРИСТИКА И ОСОБЕННОСТИ ИСЧИСЛЕНИЯ И ВЗИМАНИЯ С ФИЗИЧЕСКИХ ЛИЦ НА ТЕРРИТОРИИ ИРКУТСКОЙ ОБЛАСТИ 881.15 KB
  Налогоплательщики транспортного налога Объект налогообложения транспортного налога Налоговые ставки транспортного налога Транспортный налог является основным источником финансирования дорожной отрасли, и от своевременности его поступления напрямую зависят сроки и качество исполнения строительных программ
42773. Социальная реабилитация инвалидов и методика её осуществления 441.99 KB
  Сущность и содержание социальной реабилитации Основные цели и задачи социальной реабилитации Принципы социальной реабилитации Инвалиды составляют особую категорию населения, численность которой постоянно увеличивается. Мировым сообществом социальная защита инвалидов рассматривается как проблема первостепенной важности.
42774. Проектирование системы теплоснабжения промышленного предприятия 219.1 KB
  Определение количества теплоты на подогрев воды для горячего водоснабжения Выбор основного и вспомогательного оборудования системы транспорта теплоты Выбор основного и вспомогательного оборудования источника теплоты.Определение потребности в топливе для производства теплоты.
42775. Организация работы коктейль-бара «Малибу» 804 KB
  Целью работы является рассмотрение вновь созданного коктейль - бара на 50 посадочных мест. Моему коктейль-бару я решил дать название «Малибу», так как моим основным спонсором является «Allied Distillers Limited»
42776. Компьютерная реализация решения инженерной задачи по решению дифференциальных уравнений в частных производных 1.38 MB
  Микроэлектроника является одной из наиболее динамично развивающихся и востребованных отраслей науки и техники. Элементы современных СБИС и микрооптикоэлектромеханических систем (МОЭМС) представляют собой сложные структуры, в основу функционирования которых положены разнообразные физические эффекты. Разработка подобных элементов практически невозможна без решения уравнений математической физики, представляющих
42777. Разработка технологического процесса механической обработки шкива в условиях ЗАО «МРК» 190.3 KB
  Технический прогресс в машиностроении характеризуется как улучшением конструкций машин, так и непрерывным технологии их производства. Развитие новых прогрессивных технологических процессов обработки способствует конструированию современных машин и снижению их себестоимости. Актуальной является задача повышения качества выпускаемых машин и, в первую очередь, их точности
42778. Особенности развития силовых способностей у школьников старшей возрастной группы 351.46 KB
  Динамика силовых качеств детей старшего школьного возраста под воздействием занятий физическими упражнениями. Данный режим работы мышц имеет место в силовых упражнениях с преодолением внешнего отягощения штанги гирь гантелей отягощений на блочном устройстве. Величина прикладываемой к снаряду силы при выполнении упражнения в изотоническом режиме изменяется по ходу траектории движения так как изменяются рычаги приложения силы в различных фазах движений. Упражнения со штангой или другим аналогичным снарядом с высокой скоростью...