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;


 

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

27499. Определите гипотезу и диспозицию ст. 211 ГК РФ 32 KB
  Нормы права устанавливающие определенный шаблон поведения в той или иной ситуации т. 1 Гипотеза юридической нормы часть юридической нормы указывающая на жизненные обстоятельства при наличии или отсутствии которых реализуется норма. Если в гипотезе указано одно обстоятельство с наличием или отсутствием которого связывается действие юридической нормы то такая гипотеза называется простой. Если гипотеза действие нормы ставит в зависимость от наличия или отсутствия одновременно двух или более обстоятельств то она называется сложной.
27500. Определите структуру пенсионного правоотношения 25 KB
  В структуру правоотношения входят: 1 Субъекты участники. 3 Содержание: Субъективное право право принадлежащее субъекту права т.е управомоченному лицу мера возможного поведения.
27501. Определите структуру страхового правоотношения 30.5 KB
  Определите структуру страхового правоотношения. Страховое правоотношение это отношение урегулированное нормами страхового права и представляющее организационное единство правовой формы и его содержания возникающее действующее изменяющееся и прекращающееся на основе норм страхового права и определяемых ими субъективных прав юридических обязанностей и ответственности страхователя и страховщика. Структура страхового правоотношения состоит из следующих элементов: 1 субъект; 2 объект; 3 содержание. Так например к числу основных прав...
27502. Определите, к какому виду актов относятся: приговор суда, приказ о зачислении на работу, и какова их структура 27 KB
  Определите к какому виду актов относятся: приговор суда приказ о зачислении на работу и какова их структура. Структура: Структурная единица логический элемент правового акта объединяющий сходные в той или иной степени нормы права.
27503. Определите, к какому виду правовых норм относится ст.5 ГК РФ 35 KB
  Нормы бывают исходные и правила поведения. Так же нормы бывают: начала дефиниции принципы коллизионные. 1 Исходные отправные первичные учредительные нормы занимают высшую ступень в законодательстве имеют наиболее общий характер наиболее высокую форму абстрагирования и выполняют особую роль в механизме правового регулирования общественных отношений. Эти нормы определяют исходные начала основы правового регулирования общественных отношений.
27504. Определите, что выступает предпосылками пенсионного правоотношения 28 KB
  Разграничиваются собственно юридические факты юридически значимые обстоятельства и юридически значимые предпосылки. Первые это основные фактические обстоятельства с которыми связано появление правовых отношений данного вида например возраст инвалидность потеря кормильца выслуга лет и т. Вторые это обстоятельства которые не предопределяя появления прав и обязанностей все же влияют на их объем величина трудового стажа наличие нетрудоспособных членов семьи и иждивенцев и т. Третьи такие фактические обстоятельства которые...
27505. Основные подходы к понятию политическая система 33.5 KB
  Элементами политической организации общества являются государство общественные объединения отдельные граждане. К числу общественных объединений входящих в политическую систему общества можно отнести: общественные организации т. основанные на членстве общественные объединения создаваемые на основе совместной деятельности для защиты общих интересов и достижения уставных целей членами которых могут быть как физические так и юридические лица ст.8; общественные движения состоящие из участников и не имеющие членства общественные...
27506. Основные подходы к правопониманию 27.5 KB
  Правопонимание это научная категория отражающая процесс и результат целенаправленной мыслительной деятельности человека включающая в себя познание права его восприятие и отношение к нему как к целостному социальному явлению Субъектом правопонимания всегда выступает конкретный человек например гражданин обладающий минимальным правовым кругозором столкнувшийся с проблемой права Объектом правопонимания могут быть право конкретного общества отрасль институт права отдельные правовые нормы Содержание правопонимания составляет...
27507. Относительная самостоятельность государства и права по отношению к обществу 26.5 KB
  Самостоятельность независимость свобода от внешних влияний принуждений от посторонней поддержки помощи. Относительная самостоятельность государства его органов естественна необходима и социально оправданна. Самостоятельность государства проявляется в свободе выбора при принятии им управленческих и других актов при избрании путей и методов решения встающих перед обществом задач при определении стратегии и тактики государственной политики.