У мене виникають проблеми зі своїм запитом sql (Виберіть окрему роботу не).
Мій sql:
select distinct
count(T2.Column1)
from Table1 t2
where T2.Column1="2017-05-210"
Фактичні дані стовпця 1 мають лише 3 дані, Але вихід є 12
Nb: - Дані стовпця1 мають ситуацію від 1 до багатьох у Column2,
Ось фактичні дані:
Column 1 Column 2
1 A
1 B
1 C
1 D
2 A
2 B
2 C
2 D
3 A
3 B
3 C
3 D
Хтось може мені допомогти? Дуже цінуємо за вашу увагу.
Дякую!
Відповіді:
0 для відповіді № 1Ви хочете порахувати різні значення, так і зробіть count(distinct )
:
select count(distinct T2.Column1)
from Table1 t2
where T2.Column1="2017-05-210"
(Однак ваші вибіркові дані та дані / стовпці запиту не збігаються.)
0 для відповіді № 2
Ваші зразкові дані, результат та запит не відповідають.
Однак ваш запит:
- Знайдіть усі записи з a
column1 = "2017-05-210"
. - Порахуйте всі ці записи де
column1
не є нульовим (що справедливо для всіх цих записів, якcolumn1 = "2017-05-210"
) - У результаті виходить одне число (один рядок, один стовпець). Але ви додатково кажете з
DISTINCT
що ви хочете видалити будь-які дублікати з результативних рядків. Тільки з одного рядка не може бути дублікатів, тому функція тут зайва.
Тож подумайте, що ви хочете насправді порахувати. Ви рахуєте різні значення (тобто рахуєте ігнорування дублікатів) за допомогою COUNT(DISTINCT column)
, але COUNT(DISTINCT column1)
повернув би 1 звичайно, тому що ви тільки шукаєте один значення, яке є "2017-05-210"
(або нуль, якщо немає запису, відповідного цьому значенню).