Программирование >>  Исключение дубликатов строк 

1 ... 120 121 122 [ 123 ] 124 125 126 ... 152


SELECT, который подсчитывает все строки в таблице Employees для сотрудников, проживающих в штате Вашингтон:

SQL SELECT COUNT(*)

FROM Employees WHERE EmpState = WA

Условие WHERE можно использовать, чтобы отфильтровать строки или значения, обработанные агрегатной функцией.

Когда агрегатная функция используется в операторе SELECT, можно увидеть или не увидеть имя столбца в наборе результата для возвращаемого значения функции. Некоторые системы базы данных обеспечивают имя столбца по умолчанию, а другие нет. Но можно воспользоваться опцией AS синтаксиса функции, чтобы обеспечить значащее имя столбца для набора результата. Вот как можно применить эту опцию для предыдущего примера:

SQL SELECT COUNT(*) AS TotalWashingtonEmployees

FROM Employees WHERE EmpState = WA

Теперь набор результатов состоит из столбца TotalWashingtonEmployees, который содержит возвращаемое значение функции COUNT(*). Как показывает синтаксическая диаграмма на рис. 12.1, этот метод можно применить к любой агрегатной функции.

Функция COUNT (Типизированное выражение) используется для подсчета общего количества ne-Null значений, возвращаемых типизированным выражением. (Это выражение более широко известно как COUNT, и это имя мы будем использовать в остальной части книги.) Она подсчитывает все значения, возвращенные типизированным выражением, независимо от того, является ли оно уникальным или повторяющимся, и автоматически исключает все значения Null из окончательного подсчета. Для ответа на запросы такого типа можно использовать COUNT.

How many customers were able to Indicate which county they live in? ( Сколько клиентов смогли указать, в каком округе они проживают? )

Здесь необходимо определить, сколько реальных значений существует в столбце указания округа. Поскольку COUNT(*) включает также значения Null, она не обеспечит правильный ответ. Вместо нее используйте функцию COUNT и преобразуйте запрос следующим образом:

Преобразование: Select the count of non-null county values

as NumberOfKnownCounties from the customers table (Выбрать количество не-Null-значений для округа как NumbeЮfKnownCounties из таблицы Клиенты )

Уточнение: Select the count of попПиИ (county) values

as NumberOfKnownCounties from the customers table



(Выбрать количество (округ)

как NumberOfKnownCounties из Клиенты )

SELECT COUNT(CustCounty)

AS NumberOfKnownCounties FROM Customers

Обратите внимание, что Перевод и Уточнение явно запрашивают значения не-ЫиИ. Хотя уже известно, что эта функция обрабатывает только не-Null значения, следует добавить этот запрос к обоим операторам, чтобы быть уверенным, что используется правильная функция COUNT. Оператор SELECT, определенный здесь, будет генерировать набор результатов, который содержит числовое значение, пред-ставляюшее обш,ее количество наименований округов, обнаруженных в столбце CustCounty.

Вспомните, что функция COUNT интерпретирует повторяюш,иеся наименования округа, как если бы они были уникальными, и включает каждый из них в окончательный подсчет. Однако можно воспользоваться опцией DISTINCT функции для исключения повторяюш,ихся значений из итоговой суммы. В следуюш,ем примере показано, как можно ее применить:

How many unique county names are there in the customers table? ( Сколько уникальных названий округов имеется в таблице Клиенты? )

Преобразование: Select the count of unique county names

as NumberOfUniqueCounties from the customers table (Выбрать количество уникальных названий округов.

Уточнение:

как NumberOfUniqueCounties из таблицы Клиенты )

Select the count of unique (distinct county) names as NumberOfUniqueCounties from the customers table (Выбрать подсчет (уникальных округов) как NumberOfUniqueCounties из Клиенты )

SELECT COUNT (DISTINCT CustCounty)

AS NumberOfUniqueCouflties FROM Customers

Когда используется опция DISTINCT, база данных извлекает все He-Null-значе-ния из столбца для округа, исключает повторы, а затем подсчитывает оставшиеся значения. База данных тш,ательно разбирается в большинстве этих же процессов, когда DISTINCT используется с функциями SUM, AVG, MIN или МАХ.

В следуюш,ем примере исполь:уется немного измененная версия предыдуш,его запроса, чтобы показать, что к функции COUNT можно применять фильтр:

How many unique county names are there in the customers table for the state of Oregon?



( Сколько уникальных названий округов имеется в таблице Клиенты для штата Орегон? )

Преобразование: Select the count of unique county names as

NumberOfUniqueOregonCounties from the customers table where the state is *0R

(Выбрать количество уникальных названий округов как NumberOfUniqueOregonCounties из таблицы Клиенты ,

Уточнение:

где штатом является OR)

Select the count of unique (distinct county) as NumberOfUniqueOregonCounties names from the customers table where the state = (Выбрать подсчет (округ по одному) как NumberOfUniqueOregonCounties из Клиенты , где штат = OR)

SELECT COUNT (DISTINCT CustCounty) AS NumberOfUniqueOregonCounties

FROM Customers

WHERE CustState = OR

Использование DISTINCT с COUNT(*) не допускается. Это - разумное ограничение, поскольку COUNT(*) подсчитывает все строки в таблице независимо от того, являются ли они избыточными или содержат значения Null.

Подсчет общей суммы и SUM

С помощью функции SUM можно вычислить общую сумму числовых типизированных выражений. Она обрабатывает все He-Null-значения типизированного выражения и возвращает окончательную итоговую сумму для набора результатов. Если типизированное выражение содержит во всех строках значение Null или условия FROM и WHERE вместе возвращают пустой набор результатов, то SUM возвращает Null. Вот пример запроса, на который можно ответить, используя SUM:

What is the total amount we pay in salaries to our employees in California?

( Какая общая сумма выплачивается в виде зарплаты нашим сотрудникам в Калифорнии? )

Преобразование: Select the sum of salary as TotalSalaryAmount

from the employees table where the state is CA (Выбрать сумму заработной платы как TotalSalaryAmount из таблицы Сотрудники , где штатом является СА)



1 ... 120 121 122 [ 123 ] 124 125 126 ... 152

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика