ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 2682
Скачиваний: 8
41
BETWEEN
не
следует
путать
с
одноименными
функциями
FoxPro,
которые
,
впрочем
,
тоже
можно
использовать
.
Группированные
данных
GROUP BY <
колонка
>[,<
колонка
>...] –
задаются
колонки
,
по
которым
производится
группирование
выходных
данных
.
Все
записи
базы
,
для
которых
значения
колонок
совпадают
,
отобра
-
жаются
в
выборке
единственной
строкой
.
Группирование
удобно
для
получения
некоторых
сводных
характеристик
(
сумм
,
коли
-
честв
)
группы
.
HAVING <
условие
отбора
> -
опция
задает
критерий
отбора
данных
в
каждую
сформированную
в
процессе
выборки
группу
.
Сортировка
ORDER BY <
колонка
> [ASC/DESC][,<
колонка
>
[ASC/DESC]...] -
опция
задает
упорядочение
по
заданной
колон
-
ке
/
колонкам
.
По
умолчанию
сортировка
выполняется
по
возрас
-
танию
(ASC),
но
,
может
быть
задана
и
по
убыванию
(DESC).
Примеры
запросов
1.
Выборка
всех
полей
из
базы
KADR.DBF.
Все
колонки
выборки
будут
иметь
имена
полей
базы
данных
.
SELECT * FROM kadr
2.
Вывод
минимального
,
максимального
и
среднего
значе
-
ний
поля
SZAR
(
средняя
зарплата
).
Колонки
получат
имена
MIN_SZAR, MAX_SZAR
и
AVG_SZAR.
SELECT MIN(szar),MAX(szar),AVG(szar) FROM kadr
3.
Вывод
фамилий
работников
,
получающих
от
300000
до
800000
рублей
.
SELECT fam FROM kadr;
WHERE szar BETWEEN 300000 AND 800000
4.
Вывод
фамилий
всех
сотрудников
,
кроме
работающих
в
подразделениях
ОГМ
и
КБ
.
SELECT fam FROM kadr WHERE podr NOT IN ('
ОГМ
’, '
КБ
')
5.
Выборка
названий
всех
подразделений
(
поле
PODR)
предприятия
из
базы
KADR.DBF.
Опция
DISINST
предотвращает
42
повторный
вывод
одних
и
тех
же
названий
,
если
они
повторяют
-
ся
.
SELECT DISTINCT podr FROM kadr
6.
Выборка
фамилий
(
РАМ
)
всех
мужчин
из
KADR.DBF.
SELECT fam FROM kadr WHERE pol='M'
7.
Выборка
всех
фамилий
и
табельных
номеров
из
KADR.DBF
сцепленных
с
выработками
из
базы
BRIG1.DBF
для
записей
,
у
которых
совпадают
табельные
номера
.
SELECT s.fam,s.tab,t.tab,t.vir;
FROM kadr a,brig1 t WHERE s.tab=t.tab
Здесь
для
сокращения
записи
команды
базам
KADR.DBF
и
BRIG1. DBF
заданы
новые
временные
имена
S
и
Т
.
Они
никакие
связаны
с
рабочими
областями
.
Базы
будут
открыты
в
свобод
-
ных
областях
системы
.
Сами
колонки
выборки
получат
имена
FAM,
ТАВ
_
А
, TAB_B,VIR.
8.
Если
мы
хотим
задать
собственные
имена
колонкам
,
а
не
использовать
умолчания
,
нужно
воспользоваться
опцией
AS.
Пусть
нужно
вывести
фамилии
и
табельные
номера
(
поля
FAM
и
TAB)
по
алфавиту
и
с
другими
именами
колонок
FAMILII
и
TABEL.
SELECT fam AS familii, tab AS label;
FROM kadr ORDER BY fam
9.
Выборка
фамилий
всех
родившихся
в
текущем
месяце
с
указанием
дня
(
числа
)
рождения
,
количества
лет
и
премии
по
этому
поводу
- 50 %
от
значения
средней
зарплаты
.
SELECT fam, DAY (dtr),'
число
',YEAR (DATE ()) -YEAR(dtr),;
'
лет
', '
премия
',0.5*szar FROM kadr;
WHERE MONTH(dtr)=MONTH(DATE())
Колонки
получат
имена
FAM
и
от
ЕХР
_2
по
ЕХР
_7.
10.
Вывод
полей
FAM
и
TAB,
отсортированных
по
полям
POL (
главное
поле
)
и
FAM (
подчиненное
поле
)
в
базу
FAMTAB.DBF,
которая
затем
открывается
в
текущей
области
.
SELECT fam, tab FROM kadr;
ORDER BY pol,fam INTO TABL famtab
Чтобы
увидеть
содержимое
этой
базы
,
можно
,
например
,
сразу
ввести
команду
BROWSE.
43
11.
Вывод
для
каждого
табельного
номера
из
базы
KADR.DBF
выработок
из
баз
BRIG1.DBF
и
BRIG3.DBF,
а
также
суммарной
выработки
работника
в
обеих
бригадах
.
SELECT kadr.tab,brigl.vir,brig3.vir,brigl.vir+brig3.vir;
FROM kadr,brigl,brig3;
WHERE kadr.tab=brigl.tab AND kadr.tab=brig3.tab
Имеется
в
виду
,
что
работник
может
работать
в
несколь
-
ких
бригадах
в
течение
месяца
,
но
в
каждом
бригадном
файле
он
может
встретится
только
раз
.
12.
Вывод
фамилий
всех
работников
,
работавших
ранее
в
конструкторском
бюро
(
КБ
).
Поиск
ведется
в
мемо
-
поле
PER
ба
-
зы
KADR.DBF.
SELECT fam FROM kadr WHERE per LIKE «%
КБ
%»
13.
Вывод
табельных
номеров
и
суммарной
выработки
ка
-
ждого
работника
в
бригаде
номер
1.
Вывод
осуществляется
в
порядке
увеличения
табельных
номеров
.
SELECT tab,SUM(vir) FROM brigl;
GROUP BY tab ORDER BY tab
Задача
имеет
смысл
,
если
один
и
тот
же
человек
может
встречаться
несколько
раз
в
одной
бригаде
,
например
,
если
в
бригадном
файле
фиксируются
не
итоговые
выработки
,
а
все
наряды
.
14.
Вывод
названий
всех
подразделений
,
количества
со
-
трудников
Значений
суммарной
заработной
платы
(
фонда
опла
-
ты
).
Информация
выводится
только
для
подразделений
,
где
ко
-
личество
сотрудников
больше
пяти
.
SELECT
podr,COUNT(*),SUM(szar);
FROM kadr GROUP BY podr HAVING COUNT(*)>5
Задание
4
Создать
запросы
и
результаты
запросов
сохранить
в
фай
-
лах
DBF/
ТХТ
.
1.
Вывести
сведения
о
мужчинах
,
родившихся
с
1
января
по
1
апреля
заданного
года
.
2.
Вывести
фамилии
,
названия
предметов
и
оценки
отдельно
для
мужчин
и
женщин
.
44
3.
Вычислить
количество
студентов
,
имеющих
оценки
2,3, 4, 5
(
запрос
с
группировкой
по
полю
BALL).
4.
Вывести
фамилии
,
оценки
и
названия
предметов
,
сгруппиро
-
вав
сведения
по
предметам
.
5.
Вывести
фамилию
студента
,
имеющего
максимальный
номер
полиса
.
Для
проверки
представляются
результаты
запросов
.