Использование функций для работы с датами при организации запроса

Для вывода определенного набора данных в рамках времени и даты используют функции для работы с датами и временем.

Функция Назначение
MONTHS_BETWEEN(date1, date2) Определяет число месяцев, разделяющих две даты. Дробная часть результата представляет собой долю месяца.
ADD_MONTHS(date, n) Добавление календарных месяцев к дате.
NEXT_DAY(date, ‘char’) Ближайшая дата, когда наступит заданный день. Аргумент ‘char’ может задавать порядковый номер или название дня недели.
LAST_DAY(date) Определение последнего дня месяца, содержащего заданную дату.
ROUND(date [, ‘fmt’ ]) Округление до целого числа суток. Если fmt =YEAR, определяет первый день года.
TRUNC(date [, ‘fmt’ ]) Возвращает первый день месяца, указанного в аргументе date. Если fmt =YEAR, возвращает дату первого дня года.
SYSDATE() Возвращает текущую дату и время.

Пример 8: Вывод фамилии и количества отработанных недель для служащих отдела 43.

SELECT fam_cotr, ROUND (SYSDATE - start_date)/7,0

FROM Zaniat

WHERE id_otdel =43;

Пример 9: Вывод номера служащего, даты начала работы, количества отработанных месяцев и даты полугодовой аттестации для всех служащих, работающих менее 48 месяцев.

SELECT id_cotr, start_date,

MONTHS_BETWEEN (SYSDATE, start_date) OTRAB_MEC,

ADD_MONTHS (start_date, 6) ATTEST

FROM Zaniat

WHERE MONTHS_BETWEEN(SYSDATE, start_date)<48;

Пример 10: Вывод номера и даты каждого заказа, принятого торговым представителем номера 11. Вывод дат должен производиться в виде 08/05.

SELECT id, to_char(date_prin, ‘MM/YY’) DATA_PRIN

FROM Zakaz

WHERE id_predstav = 11;

Примечание: Функция TO_CHAR предназначена для преобразования типа даты или типа числа в строку символов в соответствии с форматной моделью.

TO_CHAR(date[, ‘форматная модель’]);

TO_CHAR(number[, ‘форматная модель’]);

Пример 11: Вывод даты следующей пятницы, отстоящей на шесть месяцев от даты заказа. Выходная дата должна иметь следующий вид: Friday, March 12 th, 2005-11-07

SELECT TO_CHAR (NEXT_DAY(ADD_MONTHS (date_zakaz,6), ‘FRIDAY’), ‘fmDAY, Month ddth, YYYY’)

FROM Zakaz;

Тема 8: Группировка строк в запросе

Предложение GROUP BY в команде SELECT. Групповые функции.

Группы внутри групп.

Предложение HAVING.

Предложение GROUP BY в команде SELECT. Групповые функции.

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

Синтаксис:

SELECT {столбец, групповая_функция}

FROM Таблица

[WHERE условие]

[GROUP BY выражение_группирования ]

[ORDER BY {Столбец, выражение} [ASC|DESC]];

где выражение_группирования определяет столбец, по значениям которого группируются строки.

Для получения сводной информации по каждой группе можно использовать групповые функции:

Функция Возвращаемое значение
AVG([ DISTINCT | ALL ] n) Среднее значение от n, нулевые значения опускаются
COUNT([ ALL ] *) Число строк, извлекаемых в запросе или подзапросе
COUNT([ DISTINCT | ALL ] expr) Число строк, для которых expr принимает не пустое значение
MAX([ DISTINCT | ALL ] expr) Максимальное значение выражения eхрr
MIN([ DISTINCT | ALL ] expr) Минимальное значение выражения eхрr
SUM([ DISTINCT | ALL ] n) Сумма значений n

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

Предложение WHERE позволяет исключить некоторые строки до начала разбиения на группы.

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

По умолчанию строки сортируются в порядке возрастания в соответствии со списком GROUP BY. Изменить порядок сортировки можно с помощью предложения ORDER BY.

Пример 1: Вывести фамилию и количество преподавателей, работающих в 123 группе (таблиц Prep).

SELECT fam, COUNT(*) as “Количество”


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: