- •Запросы к таблицам
- •Цели занятия
- •SELECT
- •Написание простейших запросов
- •Примеры написания простейших
- •Предложение WHERE
- •Использование предложения
- •Пример использования
- •Сортировка
- •Сортировка
- •Примеры сортировок
- •Агрегатные функции
- •Пример использования агрегатных
- •Предложение GROUP BY
- •Использование предложения GROUP
- •Пример использования GROUP BY
- •Предложение HAVING
- •Пример использования предложения
- •Объединение таблиц
- •Объединение таблиц
- •Пример объединения таблиц
- •Вложенные запросы
- •Вложенные запросы
- •Пример использования вложенных
Сортировка
11 SELECT имя_столбца1, имя_столбца2, имя_столбца3 FROM имя_таблицы ORDER BY имя_столбца1;
SELECT имя_столбца1, имя_столбца2, имя_столбца3 FROM имя_таблицы ORDER BY имя_столбца3 DESC;
SELECT имя_столбца1, имя_столбца2, имя_столбца3 FROM имя_таблицы ORDER BY имя_столбца1, имя_столбца3;
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Примеры сортировок
12
SELECT name, author, price FROM books ORDER BY price;
SELECT name, author, price FROM books ORDER BY price DESC;
SELECT name, author, price FROM books ORDER BY price, name;
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Агрегатные функции
13• Действуют для набора строк, но результат – единственное значение
•AVG(имя_ столбца) – среднее значение
•MAX(имя_ столбца) – максимальное значение
•MIN(имя_ столбца) – минимальное значение
•SUM(имя_ столбца) – сумма
•COUNT(*) – возвращает количество строк в таблице
•COUNT(имя_ столбца) – возвращает количество строк, отличных от null
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Пример использования агрегатных
функций
14
SELECT AVG(price), MAX(price),
MIN(price), SUM(price),
COUNT(price), COUNT(*) FROM books;
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Предложение GROUP BY
15• Позволяет разделить строки на меньшие группы
•Все столбцы из списка SELECT, не входящие в агрегатные функции, должны быть в предложении GROUP BY
•Столбец, используемый в предложении GROUP BY, не обязан входить в список SELECT
•Возможна группировка более чем по одному столбцу
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Использование предложения GROUP
BY
16 SELECT имя_столбца1, AVG(имя_столбца2) FROM имя_таблицы GROUP BY имя_столбца1;
SELECT AVG(имя_столбца1) FROM имя_таблицы GROUP BY имя_столбца2;
SELECT имя_столбца1, AVG(имя_столбца2) FROM имя_таблицы GROUP BY имя_столбца3, имя_столбца1;
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Пример использования GROUP BY
17
SELECT shop_id, AVG(price) FROM books GROUP BY shop_id;
SELECT AVG(price) FROM books GROUP BY shop_id;
SELECT name, AVG(price) FROM books GROUP BY shop_id, name;
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Предложение HAVING
18• Используется для вывода групп, удовлетворяющих предложению HAVING
•Предложение HAVING указывается до предложения ORDER BY
SELECT имя_столбца1, AVG(имя_столбца2) FROM имя_таблицы GROUP BY имя_столбца3, имя_столбца1 HAVING условие;
SELECT имя_столбца1, AVG(имя_столбца2) FROM имя_таблицы GROUP BY имя_столбца3, имя_столбца1 HAVING условие ORDER BY AVG(имя_столбца2) DESC;
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Пример использования предложения
HAVING
19 SELECT name, AVG(price) FROM books GROUP BY shop_id, name HAVING AVG(price) > 400;
SELECT name, AVG(price) FROM books GROUP BY shop_id, name HAVING AVG(price) > 400 ORDER BY AVG(price) DESC;
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |
Объединение таблиц
20• Можно получать данные из нескольких таблиц путём их объединения через:
1)Предложение WHERE
2)Через INNER JOIN
3)Через LEFT OUTER JOIN (RIGHT OUTER JOIN)
•Можно объединять таблицу саму с собой (SELF JOIN), в этом случае следует использовать два разных имени для таблицы в предложении FROM
•Если в разных таблицах столбцы имеют одинаковые имена, то перед именем столбца нужно указывать имя таблицы
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2012 |