Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Группировка по одному столбцу




Создание групп по одному столбцу, рассмотрим на примере таблицы "Ведомость"

Ведомость

 

Запрос 1.

 

Запрос 2.

 

Запрос 3.

 

 


Группировка по нескольким столбцам

Как уже говорилось, столбцы группировки указываются в предложении GROUP BY.

Если для группировки используются несколько столбцов, то статистический расчет осуществляется только для последнего столбца указанного в предложении GROUP BY.

 

Создание групп по нескольким столбцам, рассмотрим на примере таблицы "Список".

 

Список Запрос

 

 

Примечание:

  1. Имена столбцов, указанные в операторе SELECT, должны быть повторены в предложении GROUP BY.
  2. Предложение GROUP BY, должно следовать за предложением WHERE (если оно присутствует).

 

 

Фильтрация групп

 

Для фильтрации групп, по каким либо условиям, применяется предложение HAVING. Предложение HAVING аналогично предложению WHERE, только WHERE фильтрует строки, а HAVING фильтрует группы. Предложение HAVING указывается после предложения GROUP BY.

ВНИМАНИЕ:

Правило применения имен полей в HAVING

 

В предложении HAVING, кроме статистических функций, могут анализироваться имена полей по которым проводилась группировка.

 

ПРИМЕРЫ:

Запрос.

В таблицы Ведомость, определить классы, где количество учеников больше 3.

 

 

Примечание:

Предложение HAVING неумеет работать с псевдонимами полей. Поэтому, писать в запросе, Количество >3, будет неправильным, надо писать COUNT (Класс) >3

 

Запрос.

В таблицы Ведомость, определить количество учеников в 1 и 3 классе.

 

 

Сортировка групп

Для сортировки групп используется известное предложение ORDER BY,которое в запросе указывается последним. В качестве параметра сортировки, в предложение ORDER BУ указывается вычисляемое выражение.

Сортировку рассмотрим на примере таблицы "Ведомость".

Ведомость

Класс Ср
  30,5
   
   

 

 


Примеры:

I. Выполнить ряд запросов к БД, составленной с нарушением правил нормализации.

Фамилия Группа История Информ МатАн
БАЖАНОВА        
КОВАЛЕНКО        
ЛАПИНА        
СМОЛИК        
ГОРБУНОВА        

 

 

 


 

Запрос 1. Определить фамилии отличников.

           
 
   
Фамилия
СМОЛИК

 

   
 
 
 
   
 
   
 
   

 


Запрос 2. Определить фамилии студентов, успешно сдавших экзамен.

       
   
Фамилия
СМОЛИК
ГОРБУНОВА

 

 
 
 

 

 

 


Запрос 3. Определить фамилии студентов, получивших хотя бы одну двойку.

 
 
Фамилия
БАЖАНОВА
КОВАЛЕНКО
ЛАПИНА

 

 

 

 


Запрос 4. Определить средний балл каждого студента.

       
   
Фамилия Балл
БАЖАНОВА 3,9
КОВАЛЕНКО 2,9
ЛАПИНА 3,9
СМОЛИК 5.0
ГОРБУНОВА 4,2

 

 

 

 

II. Выполнить ряд запросов к БД, составленной по правилам нормализации.

           
   
Фамилия Группа История Информ МатАн
БАЖАНОВА        
КОВАЛЕНКО        
ЛАПИНА        
СМОЛИК        
ГОРБУНОВА        

 

 
   

 


Студенты Ведомость Дисциплины

           
 
П_Ключ_С Фамилия Группа
  БАЖАНОВА  
  КОВАЛЕНКО  
  ЛАПИНА  
  СМОЛИК  
  ГОРБУНОВА  

 

 
В_Ключ_С В_Ключ_П Оценка
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

 

 
П_Ключ_П Предмет
  История
  Информатика
  Эконометрика

 

 
 

 


Запрос 1. Определить фамилии отличников.

             
 
SELECT Фамилия FROM Студенты INNER JOIN Ведомость ON Студенты.П_Ключ_С=Ведомость.В_Ключ_С WHERE Оценка=5 GROUP BY Фамилия HAVING COUNT (Фамилия) =3
 
   
 
     
Фамилия
СМОЛИК

 

 
   
 
 

 

 

       
 
 
   

 

 

Запрос 2. Определить фамилии студентов, успешно сдавших экзамен.

 

 


Запрос 3. Определить фамилии студентов, получивших хотя бы одну двойку.

 

 

 


Запрос 4. Определить средний балл каждого студента.

 


Если студент сдавал не все экзамены то:

 


ПРИМЕЧАНИЕ:

Для исключения попадания в одну группу однофамильцев, предложение

GROUP BY Фамилия

следует писать как

GROUP BY Фамилия, П_Ключ_С

 


Занятие 8


Подзапросы

Определение:

Подзапрос- это запрос, вложенный в другой запрос. Подзапросы часто называют подчиненными запросами.

Подчиненный запрос можно использовать вместо выражения в списке полей инструкции SELECT или в предложениях WHERE и HAVING.

Использование подзапросов наиболее эффективно в реляционных базах данных, в которых описаны все таблицы и отношения подчиненности между ними.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...