mysql> SELECT emp_id, fname, lname, start_date, title > FROM employee > WHERE (title = 'Head Teller' AND start_date > '20020101') > OR (title = 'Teller' AND start_date > '20030101'); ++++++
| emp_id | fname | lname | start_date | title |
++++++
| 6 | Helen | Fleming | 20040317 | Head Teller |
| 7 | Chris | Tucker | 20040915 | Teller |
| 10 | Paula | Roberts | 20020727 | Head Teller |
| 12 | Samantha | Jameson | 20030108 | Teller |
| 15 | Frank | Portman | 20030401 | Teller |
++++++
5 rows in set (0.00 sec)
Для разделения групп условий при использовании различных опера
торов всегда следует применять круглые скобки, чтобы автор запроса,
сервер БД и любой специалист, который позже будет работать с этим
кодом, понимали, что происходит.
Блоки group by и having Все рассмотренные до сих пор запросы извлекали необработанные стро
ки данных, не выполняя над ними никаких действий. Однако иногда
вам захочется выявить в данных общие направления, для чего серверу
БД придется немного поколдовать над ними, прежде чем предоставить
вам результирующий набор. Одним из средств для этого является блок
group
by
, предназначенный для группировки данных по значениям
столбцов. Например, вместо списка сотрудников и отделов, в которых
они числятся, нужен список отделов с числом сотрудников, работаю
щих в каждом из них. С блоком
group
by
также можно использовать
блок
having
, позволяющий фильтровать данные групп аналогично бло
ку
where
, позволяющему фильтровать необработанные данные.
Я хотел лишь слегка коснуться этих двух блоков, чтобы в дальнейшем
они не были неожиданностью для читателей, но они немного сложнее,
чем другие четыре блока выражения
select
. Поэтому прошу дождать
ся главы 8, где полностью описано, как и когда использовать
group
by
и
having
.