В чем разница между количеством (*) и количеством (имя_атрибута)? - PullRequest
1 голос
/ 06 ноября 2019

Есть ли какая-либо разница между COUNT (*) и COUNT (имя_атрибута)?

Я использовал count (attribute_name), так как думал, что он будет конкретным, поэтому процесс поиска будет проще. Это правда?

Было бы замечательно увидеть любой пример с кодом sql для моей проблемы, чтобы помочь мне лучше понять

Ответы [ 5 ]

2 голосов
/ 06 ноября 2019

COUNT(*) считает все записи в группе.

COUNT(column_name) учитывает только ненулевые значения.

Существует также другое типичное выражение, COUNT(DISTINCT column_name), которое считает ненулевые различные значения.

Так как вы просили об этом, вот демонстрация для DB Fiddlde:

with t as (
    select 1 x from dual
    union all select 1 from dual
    union all select null from dual
)
select count(*), count(x), count(distinct x) from t
COUNT(*) | COUNT(X) | COUNT(DISTINCTX)
-------: | -------: | ---------------:
       3 |        2 |                1
2 голосов
/ 06 ноября 2019

Представьте себе эту таблицу:

enter image description here


select Count(TelephoneNumber) from Calls -- returns 3
select Count(*) from Calls -- returns 4

count (column_name) также подсчитывает повторяющиеся значения. Рассмотрим:

enter image description here

select Count(TelephoneNumber) from Calls -- returns 4
1 голос
/ 06 ноября 2019

count() учитывает только ненулевые значения. * ссылается на всю строку и поэтому никогда не исключает никаких строк. count(attribute_name) учитывает только те строки, в которых этот столбец не равен нулю.

Итак, это:

select count(attribute_name)
from the_table

эквивалентно:

select count(*)
from the_table
where attribute_name is not null
1 голос
/ 06 ноября 2019

COUNT(*) будет считать все строки. COUNT(column) будет учитываться только non-NULLs.

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

Ниже приведен пример таблицы сотрудников

ID        Name      Description
1         Raji      Smart
2         Rahi      Positive
3 
4         Falle     Smart

выберите количество (*) от сотрудника;

Count(*)
4

выберите количество (имя) от сотрудника;

Count(Name)
3
0 голосов
/ 06 ноября 2019

Разница проста: COUNT (*) считает количество строк, созданных запросом, тогда как COUNT (1) считает число 1 ценности. Обратите внимание, что когда вы включаете литерал, например число или строку, в запрос, этот литерал «добавляется» или присоединяется к каждой строке, созданной предложением FROM .

Дляподробнее эта ссылка поможет вам понять.

...