Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
языки БД.doc
Скачиваний:
4
Добавлен:
26.11.2018
Размер:
153.6 Кб
Скачать

Запросы с группировкой

Условие группировки GROUP BY используется в том случае, если какое-либо поле содержит повторяющиеся значения. В этом случае записи с каждым повторяющимся значением будут выделены в отдельные группы, к которым можно применить агрегатные функции. Применение ключевого слова DISTINCT, записанного перед аргументом агрегатной функции к столбцу, приводит к удалению из него повторяющихся значений.

  1. Выбрать из таблицы "Pokup" поле "Вид оплаты", сгруппировать по нему, рассчитать сумму стоимости товара и доставки для каждого вида оплаты (наличный, безналичный)

SELECT cvid, SUM(ntov+ndos)

FROM Pokup

GROUP BY cvid;

9_1. Можно использовать группировку по нескольким полям. Выбрать из таблицы "Pokup" поля "Вид оплаты" и "Код товара", сгруппировать по этим полям, рассчитать сумму стоимости товара и доставки для каждого товара и вида оплаты.

SELECT cvid, nkod, SUM(ntov+ndos)

FROM Pokup

GROUP BY Pokup.Cvid, Pokup.Nkod;

9_2. применение агрегатной функции к группе

SELECT cvid, SUM(ntov)

FROM Pokup

GROUP BY Pokup.Cvid;

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

  • Константа;

  • Агрегатная функция;

  • Столбец группировки, который по определению имеет одно и то же значение во всех строках группы;

  • Выражение, включающее в себя перечисленные выше элементы.

На практике HAVING должно включать как минимум одну агрегатную функцию.

  1. В предыдущем запросе наложить на группу суммы условие > 500 , использовать HAVING.

SELECT Pokup.Cvid, Sum(Ntov+Ndos) AS Цена, Nkod

FROM Pokup

GROUP BY Pokup.Cvid, Nkod

HAVING (Sum([Ntov]+[Ndos])>500);

Сортировка таблицы результатов запроса

Условие упорядочивания позволяет задать порядок следования записей в столбце. В качестве такового задается одно или несколько полей. По умолчанию записи располагаются в порядке возрастания. Для размещения в порядке убывания необходимо указывать ключевое слово DESC.

Использование ключевого поля TOP n , n – числовое значение, позволяет отобрать только n первых строк, причем набор строк зависит от порядка сортировки.

  1. Выбрать все поля из таблицы "Tovary" в порядке возрастания цены

SELECT *

FROM Tovary

ORDER BY nzena;

10_1. Выбрать все поля из таблицы "Tovary" в порядке убывания сорта.

SELECT *

FROM Tovary

ORDER BY nsort DESC;

10_2. и 10_3. Выбрать 5 первых строк из таблицы Tovary

SELECT TOP 5 *

FROM Tovary;

Отсортировать по убыванию Nkod и выбрать опять 5 первых строк.

SELECT TOP 5 *

FROM Tovary

ORDER BY Nkod;

Внесение изменений в бд

Запрос на создание новой таблицы

Выборку, полученную в результате запроса можно сохранить в новой таблице. Для этого используется ключевое слово INTO.

SELECT Список Выбираемых Полей INTO новая таблица

FROM Список Таблиц

1. Выбрать поля "Фамилия", "Дата поступления заявки", "Стоимость товара" и направить результат в новую таблицу “tab_new”.

SELECT cfam, dpos, ntov INTO tab_new

FROM Pokup;