Глава 3. Основные операции с таблицами
для всех типов самолетов. Имея некоторый опыт в программировании на других язы-
ках, нетрудно предположить, что в языке SQL должна присутствовать функция для
подсчета количества строк в таблицах. Да, такая функция есть — это count. Конечно,
для решения задачи, поставленной выше, в принципе можно воспользоваться таки-
ми командами:
SELECT count( * ) FROM seats WHERE aircraft_code = 'SU9';
SELECT count( * ) FROM seats WHERE aircraft_code = 'CN1';
...
Очевидно, что это нерациональный подход, поскольку придется выполнять отдель-
ные однотипные команды для всех моделей самолетов. Язык SQL позволяет упро-
стить решение такой задачи за счет применения операции группирования строк
на основе некоторого критерия. Этим критерием будет являться совпадение значе-
ний атрибута «Код самолета» (aircraft_code) у различных строк таблицы «Места»
(seats).
В модифицированной команде вместо предложения WHERE будет добавлено предло-
жение GROUP BY, которое отвечает за группировку строк с одинаковыми значениями
атрибута aircraft_code. Обратите внимание, что при наличии предложения GROUP
BY агрегатная функция count выполняет подсчеты строк для каждой группы строк.
SELECT aircraft_code, count( * ) FROM seats
GROUP BY aircraft_code;
Конечно, в вашей выборке значения в столбце count будут гораздо меньше.
aircraft_code | count
---------------+-------
773
| 402
733
| 130
CN1
|
12
CR2
|
50
319
| 116
SU9
|
97
321
| 170
763
| 222
320
| 140
(9 строк)
Если мы захотим отсортировать выборку по числу мест в самолетах, то нужно будет
дополнить команду предложением ORDER BY, которое обеспечит сортировку резуль-
тирующих строк по значениям второго столбца.
46
|