Задача:
Напишите вместо пропуска в запросе агрегатную функцию, которая сосчитает количество строк без неопределенных значений в столбце agg:
SELECT [ПРОПУСК] agg FROM table
Решение:
Для подсчета количества строк без неопределенных (NULL) значений в столбце используется агрегатная функция COUNT(), в которую передается имя столбца.
Таким образом, пропущенная часть запроса будет COUNT(.
Полный запрос будет выглядеть так:
SELECT COUNT(agg) FROM table
Пояснение:
В SQL агрегатная функция COUNT() используется для подсчета количества строк. У нее есть несколько вариантов использования:
COUNT(*): Подсчитывает общее количество строк в результирующем наборе, включая строки с NULL-значениями в любых столбцах.COUNT(имя_столбца): Подсчитывает количество строк, в которых указанныйимя_столбцане содержит NULL-значений. То есть, она игнорирует строки, где значение в этом столбце является неопределенным.COUNT(DISTINCT имя_столбца): Подсчитывает количество уникальных, не-NULL значений в указанном столбце.
В данном вопросе требуется сосчитать "количество строк без неопределенных значений в столбце agg". Это точно соответствует поведению COUNT(agg).
Пример:
Предположим, у нас есть таблица Products со столбцом Price:
ProductID | Price ----------|------ 1 | 10.00 2 | 15.50 3 | NULL 4 | 20.00 5 | NULL
Если мы выполним запрос SELECT COUNT(Price) FROM Products;, результат будет 3, так как функция COUNT(Price) посчитает только строки с ProductID 1, 2 и 4, игнорируя строки с NULL в столбце Price.
Если бы мы использовали SELECT COUNT(*) FROM Products;, результат был бы 5, так как подсчитываются все строки.
