Как я могу использовать счет (*) в операторе, где?

StackOverflow https://stackoverflow.com/questions/4834100

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top