Возможно ли, что: "SELECT COUNT (*) <SELECT COUNT (VALUE)?" - PullRequest
0 голосов
/ 08 января 2020

Может ли значение результата SELECT COUNT (*) быть меньше значения SELECT COUNT (VALUE)?

И почему? Объясните ответ пожалуйста.

Ответы [ 3 ]

2 голосов
/ 09 января 2020

COUNT(*) считает каждую запись, а COUNT(value) учитывает только ненулевые значения. Для данного набора данных COUNT(*) не может быть меньше COUNT(value), но может быть и больше.

Рассмотрим следующий набор данных:

val
1
2
null

У нас есть 3 записи, одна из которых имеет значение нулевой. Теперь, если мы запустим:

select count(*), count(val) from t

Мы получим:

count(*) | count(val)
-------: | ---------:
       3 |          2

Демонстрация на DB Fiddlde

1 голос
/ 09 января 2020

Как я понимаю, ваш вопрос кажется невозможным, потому что select count(*) всегда учитывает все строки в таблице, а select count(value) должно быть одинаковым или меньшим.

Возможно, если у вас есть select count (distinct (*)), может быть меньше, но в том случае, если вы упомянули, это невозможно.

0 голосов
/ 09 января 2020

Нет обоих одинаковых, вам нужно использовать, как это select count(*), (select count(val/*/1) from t where val IS NOT NULL ) from t

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...