Поделиться через


Свертывание групп строк

Может быть создан результат запроса, в котором каждая результирующая строка соответствует всей группе строк исходных данных. При свертывании строк следует помнить о следующих моментах.

  • Можно устранить дублирование строк — некоторые запросы могут создавать результирующие наборы, в которых есть несколько одинаковых строк. Например, может быть создан результирующий набор, в котором каждая строка содержит название государство и города, в котором проживает автор; но если в одном городе проживает несколько авторов, будет несколько одинаковых строк. Конечный код SQL может выглядеть следующим образом:

    SELECT city, state
    FROM authors
    

    Результирующий набор, формируемый предыдущим запросом, не очень удобен. Если в городе проживает четыре автора, результирующий набор будет включать в себя четыре одинаковые строки. Так как результирующий набор не включает никаких других столбцов, кроме столбцов города и государство, отличить одну строку от другой нельзя. Одним из способов избежать повторяющихся строк является включение дополнительных столбцов, которые позволят различать строки. Например, если включить имя автора, каждая строка будет отличаться от всех остальных (при условии, что в городе не проживают два автора-однофамильца). Конечный код SQL может выглядеть следующим образом:

    SELECT city, state, fname, minit, lname
    FROM authors
    

    Хотя предыдущий запрос позволяет обойти затруднение, в действительности он не решает проблему. Это значит, что в результирующем наборе нет дублированных строк, но теперь это уже не результирующий набор, относящийся к городам. Чтобы избежать повторов в исходном результирующем наборе и в то же время иметь строки, описывающие только город, можно создать запрос, возвращающий только различающиеся строки. Конечный код SQL может выглядеть следующим образом:

    SELECT DISTINCT city, state
    FROM authors
    

    Подробные сведения об устранении повторов см. в разделе Практическое руководство. Исключение повторяющихся строк.

  • Можно производить вычисления на группах строк — это означает, что можно обобщать данные в группах строк. Например, может быть создан результирующий набор, в котором каждая строка содержит название государство и города, где проживает один из авторов, плюс количество авторов, проживающих в этом городе. Конечный код SQL может выглядеть следующим образом:

    SELECT city, state, COUNT(*)
    FROM authors
    GROUP BY city, state
    

    Подробности о вычислении на группах строк см. в разделах Сводка по результатам запроса и Сортировка и группировка результатов запроса.

  • Можно использовать критерии выбора для включения в группы строк — например, может быть создан результирующий набор, в котором каждая строка содержит название государство и города, где проживают несколько авторов, плюс количество авторов, проживающих в этом городе. Конечный код SQL может выглядеть следующим образом:

    SELECT city, state, COUNT(*)
    FROM authors
    GROUP BY city, state
    HAVING COUNT(*) > 1
    

    Сведения о применении критериев выбора на группах строк см. в разделах Практическое руководство. Определение условий для групп и Практическое руководство. Использование предложений HAVING и WHERE в одном запросе.

См. также

Другие ресурсы

Установка условий поиска

Конструирование запросов и представлений