Как я могу использовать счет (*) в операторе, где?
-
27-10-2019 - |
Вопрос
Я не понимаю, почему это не работает и как это исправить, я пробовал различные вещи, такие как написание
select COUNT(p.OwnerUserId)
Но это не работает, и я не понимаю, что ошибка MSGS. Я не использую MS SQL (я использую SQLite и MySQL).
Как написать этот запрос, чтобы я мог отфильтровать QC на 10 или 50? (где QC> 50 и ...)
В основном подключите SQL ниже в этот URL, запустите его, и вы увидите 1 в результатах.http://data.stackexchange.com/stackoverflow/query/new
SELECT
TOP 100
p.OwnerUserId AS [User Link],
sum(ViewCount) as VC,
avg(ViewCount) as AVC,
COUNT(p.OwnerUserId ) as QC
FROM Posts p
join Users on p.OwnerUserId = Users.Id
where PostTypeId = 1 and ViewCount<10000 and CommunityOwnedDate is null
group by p.OwnerUserId
order by AVC desc
Решение
SELECT
TOP 100
p.OwnerUserId AS [User Link],
sum(ViewCount) as VC,
avg(ViewCount) as AVC,
COUNT(p.OwnerUserId ) as QC
FROM Posts p
join Users on p.OwnerUserId = Users.Id
where PostTypeId = 1 and ViewCount<10000 and CommunityOwnedDate is null
group by p.OwnerUserId
HAVING COUNT(p.OwnerUserId ) between 10 and 50 -- <<<<<
order by AVC desc
Другой вариант - сделать это подзадном
SELECT
TOP 100
FROM (
SELECT
p.OwnerUserId AS [User Link],
sum(ViewCount) as VC,
avg(ViewCount) as AVC,
COUNT(p.OwnerUserId ) as QC
FROM Posts p
join Users on p.OwnerUserId = Users.Id
where PostTypeId = 1 and ViewCount<10000 and CommunityOwnedDate is null
group by p.OwnerUserId
) SQ
WHERE QC >= 50
order by AVC desc
Другие советы
Вам нужно использовать пункт для фильтрации агрегированного поля
Попробуй это:
SELECT
TOP 100
p.OwnerUserId AS [User Link],
sum(ViewCount) as VC,
avg(ViewCount) as AVC,
COUNT(p.OwnerUserId ) as QC
FROM Posts p
join Users on p.OwnerUserId = Users.Id
where PostTypeId = 1 and ViewCount<10000 and CommunityOwnedDate is null
group by p.OwnerUserId
HAVING COUNT(p.OwnerUserId ) > 50
order by AVC desc
Когда вы используете агрегаты, вы должны использовать having
вместо where
.
Не связан с StackOverflow