Как сделать чтобы count выводил 0 sql

Обновлено: 06.07.2024

Недавно я задал этот вопрос в интервью. Я попробовал это в mySQL и получил те же результаты (окончательные результаты). Все указали количество строк в этой конкретной таблице. Может ли кто-нибудь объяснить основное различие между ними.

ОТВЕТЫ

Ответ 1

Ничего, если вы не укажете поле в таблице или выражение в скобках вместо постоянных значений или *

Позвольте мне дать вам подробный ответ. Граф даст вам нулевой номер записи данного поля. Скажем, у вас есть таблица с именем A

все возвращают одинаковое количество записей, то есть количество строк в таблице A. Все же результат отличается. Если в таблице записано 3 записи. С именами полей X и Y

Итак, все три запроса возвращают одинаковое число. Если вы не используете

поскольку есть только одно ненулевое значение, вы получите 1 в качестве вывода

Ответ 2

COUNT(*) будет подсчитывать количество строк, а COUNT(expression) будет считать ненулевые значения в выражении, а COUNT(column) будет считать все ненулевые значения в столбце.

Поскольку оба значения 0 и 1 являются ненулевыми значениями, COUNT(0)=COUNT(1) , и оба они будут эквивалентны количеству строк COUNT(*) . Это другое понятие, но результат будет таким же.

Ответ 3

Теперь - все они должны выполняться одинаково.

В прошедшие дни, хотя COUNT (1) (или любая другая константа, которую вы выбрали), иногда рекомендуется рекомендовать по COUNT (*), потому что плохой код оптимизации запроса заставит базу данных получить все данные поля до запуска подсчета. Поэтому COUNT (1) был быстрее, но теперь это не имеет значения.

Ответ 4

Все вышеперечисленное возвращает общее количество записей (включая нулевые).

Но COUNT('any constant') быстрее, чем COUNT(*) .

Ответ 5

Допустим, у нас есть таблица с колонками

Система возвращает все значения столбца (нулевые и ненулевые), когда мы запрашиваем

Система возвращает значения столбцов, которые не равны нулю, когда мы запрашиваем

Система возвращает общее количество строк, когда мы запрашиваем

Ответ 6

Производительность и качество счета (параментро) и консультация по регистрациям нет нуля и консультации (*) количество запросов (*).

Ответ 7

Поскольку выражение 1 является константным выражением, они всегда должны давать один и тот же результат, но реализации могут отличаться, так как некоторые СУБД могут проверять наличие 1 IS NULL для каждой отдельной строки в группе. Это все еще выполняется PostgreSQL 11.3, как я показал в этой статье.

Я сравнил запросы по 1М строкам, выполнив подсчет двух типов:

Одной из причин, по которой люди могут использовать менее интуитивный COUNT(1) , может быть то, что исторически, это был наоборот.

можно ли указать условие в Count() ? Я хотел бы подсчитать только строки, которые имеют, например, "менеджер" в столбце позиции.

Я хочу сделать это в инструкции count, не используя WHERE ; Я спрашиваю об этом, потому что мне нужно считать как менеджеров, так и других в том же SELECT (что-то вроде Count(Position = Manager), Count(Position = Other)) так WHERE мне не нужен в этом примере.

если вы не можете просто ограничить сам запрос с помощью where статья, вы можете использовать тот факт, что count aggregate подсчитывает только ненулевые значения:

вы также можете использовать sum агрегировать аналогичным образом:

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

предположим, в том же столбце у вас были значения Manager, Supervisor и Team Lead, вы могли бы получить подсчеты каждого из них следующим образом:

ответ@Guffa отличный, просто укажите, что, возможно, чище с помощью оператора IF

зависит от того, что вы имеете в виду, но другая интерпретация значения-это то, где вы хотите подсчитать строки с определенным значением, но не хотите ограничивать выбор только этими строками.

вы бы сделали это, используя SUM() с предложением in, как это вместо использования COUNT(): например,

вы также можете использовать ключевое слово Pivot, если вы используете SQL 2005 или выше

Набор Тестовых Данных

Я знаю, что это очень старый, но мне нравится NULLIF трюк для таких сценариев, и я пока не нашел никаких недостатков. Просто посмотрите мой пример copy&pasteable, который не очень практичен, но демонстрирует, как его использовать.

NULLIF может дать вам небольшое негативное влияние на производительность, но я думаю, что это все равно должно быть быстрее, чем подзапросы.

Я думаю,вы можете использовать простое предложение WHERE для выбора только записи count some.

Favorite

Добавить в избранное

SQL - Функция COUNT

Ф ункция COUNT в SQL является простейшей функцией и очень полезна при подсчете количества записей, которые, как ожидаются, должны быть возвращены с помощью заявления SELECT.

Чтобы понять функцию COUNT, рассмотрим таблицу EMPLOYEE_TBL, которая показывает следующие записи:

Теперь предположим, что на основе приведенной выше таблице вы хотите подсчитать общее количество строк в этой таблице, то вы можете сделать это следующим образом:

Точно так же, если вы хотите подсчитать количество записей для имени AndreyEx, то это можно сделать следующим образом:

Примечание – Все запросы SQL нечувствительны к регистру, поэтому не имеет никакого значения, как вы напишете: ANDREYEX или AndreyEx в операторе WHERE.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

COUNT(expr) возвращает число строк с не-null значениями для expr :

У функции COUNT есть три формата:

  • COUNT(*)
  • COUNT(expr)
  • COUNT(DISTINCT expr)

COUNT(*) возвращает число строк в таблице, которые удовлетворяют критерию оператора SELECT , включая дублирующиеся строки и строки, содержащие null-значения в любом из столбцов. Если предложение WHERE включается в оператор SELECT , COUNT(*) возвращает число строк, которые удовлетворяют условию в предложении WHERE .

Напротив, COUNT(expr) возвращает число не-null значений, которые находятся в столбце, идентифицированном expr .

COUNT(DISTINCT expr) возвращает число уникальных, не-null значений, которые находятся в столбце, определяемом expr .

Пример на рисунке выводит на экран численность персонала в отделе 50.

Пример на рисунке выводит на экран численность сотрудников в отделе 80, которые могут заработать комиссионные.

Использование Ключевого слова DISTINCT

COUNT(DISTINCT expr) возвращает число различных не-null значений expr .

Пример вывода на экран числа различных отделов в таблице EMPLOYEES :

Используйте ключевое слово DISTINCT , чтобы не считать дублирующиеся значения в столбце.

Пример на рисунке выводит на экран число различных значений отделов, которые находятся в таблице EMPLOYEES .

Функция COUNT() возвращает количество строк, соответствующих заданному критерию.

Функция AVG() возвращает среднее значение числового столбца.

Функция SUM() возвращает общую сумму числового столбца.

Синтаксис COUNT()

Синтаксис AVG()

Синтаксис SUM()

Демо база данных

Ниже приведен выбор из таблицы "Products" в образце базы данных Northwind:

ProductID ProductName SupplierID CategoryID Unit Price
1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22
5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

Пример COUNT()

Следующая инструкция SQL находит количество продуктов:

Пример

Примечание: Значения NULL не учитываются.

Пример AVG()

Следующая инструкция SQL находит среднюю цену всех продуктов:

Пример

Примечание: Значения NULL игнорируются.

Демо база данных

Ниже приведен выбор из таблицы "OrderDetails" в образце базы данных Northwind:

OrderDetailID OrderID ProductID Quantity
1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40

Пример SUM()

Следующая инструкция SQL находит сумму полей "Quantity" в таблице "OrderDetails":

Пример

Примечание: Значения NULL игнорируются.

Упражнения

Тесты

КАК СДЕЛАТЬ

ПОДЕЛИТЬСЯ

СЕРТИФИКАТЫ

Если вы хотите сообщить об ошибке или сделать предложение, не стесняйтесь, присылайте нам электронное письмо:

Ваше предложение:

Спасибо, за вашу помощь!

Топ Учебники

Топ Справочники

Топ Примеры

Веб Сертификаты

SchoolsW3 оптимизирован для обучения, тестирования и тренировки. Примеры упрощают и улучшают чтение и базовое понимание. Учебники, справочники, примеры постоянно пересматриваются, для того, чтобы избежать ошибки, невозможно гарантировать правильность всего содержимого. Используя данный сайт, вы соглашаетесь прочитать и принять условия использования, cookie и Политика конфиденциальности. Авторское право 1999 - 2022 Все права защищены.
Работает на W3.CSS.

Читайте также: