Сворачивание групп строк (визуальные инструменты для баз данных)
Можно создать результат запроса, в котором каждая результирующая строка соответствует всей группе строк исходных данных. При сворачивании строк следует помнить о следующих моментах.
Можно устранить дублирование строк Некоторые запросы могут создавать результирующие наборы, в которых есть несколько одинаковых строк. Например, может быть создан результирующий набор, в котором каждая строка содержит название страны и города, в котором проживает автор; но если в одном городе проживает несколько авторов, будет несколько одинаковых строк. Конечный код SQL может выглядеть следующим образом:
SELECT city, stateFROM authors
Результирующий набор, формируемый предыдущим запросом, не очень удобен. Если в городе проживает четыре автора, результирующий набор будет включать в себя четыре одинаковые строки. Так как результирующий набор не включает никаких других столбцов, кроме столбцов города и страны, отличить одну строку от другой нельзя. Одним из способов избежать повторяющихся строк является включение дополнительных столбцов, которые позволят различать строки. Например, если включить имя автора, каждая строка будет отличаться от всех остальных (при условии, что в городе не проживают два автора-однофамильца). Конечный код SQL может выглядеть следующим образом:
SELECT city, state, fname, minit, lnameFROM authors
Хотя предыдущий запрос позволяет обойти затруднение, в действительности он не решает проблему. Это значит, что в результирующем наборе нет дублированных строк, но теперь это уже не результирующий набор, относящийся к городам. Чтобы избежать повторов в исходном результирующем наборе и в то же время иметь строки, описывающие только город, можно создать запрос, возвращающий только различающиеся строки. Конечный код SQL может выглядеть следующим образом:
SELECT DISTINCT city, stateFROM authors
Подробности об устранении повторов см. в разделе Как исключить повторяющиеся строки (визуальные инструменты для баз данных).
Можно производить вычисления на группах строк Это означает, что можно обобщать информацию в группах строк. Например, может быть создан результирующий набор, в котором каждая строка содержит название страны и города, в котором проживает один из авторов, плюс количество авторов, проживающих в этом городе. Конечный код SQL может выглядеть следующим образом:
SELECT city, state, COUNT(*)FROM authorsGROUP BY city, state
Подробности о вычислении на группах строк см. в разделах Формирование итоговых результатов запросов (визуальные инструменты для баз данных) и Сортировка и группирование результатов запроса (визуальные инструменты для баз данных).
Можно использовать критерии выбора для включения в группы строк Например, может быть создан результирующий набор, в котором каждая строка содержит название страны и города, в котором проживают несколько авторов, плюс количество авторов, проживающих в этом городе. Конечный код SQL может выглядеть следующим образом:
SELECT city, state, COUNT(*)FROM authorsGROUP BY city, stateHAVING COUNT(*) > 1
Сведения о применении критериев выбора на группах строк см. в разделах Как задать условия для групп (визуальные инструменты для баз данных) и Как использовать предложения HAVING и WHERE в одном запросе (визуальные инструменты для баз данных).