我如何在where语句中使用Count(*)?

2 t-sql sql-server dataexplorer

我不明白为什么这不起作用以及如何解决它,我尝试了各种各样的事情,比如写作

select COUNT(p.OwnerUserId)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我不明白错误消息.我不使用MS SQL(我使用SQLite和MySQL).

我如何编写此查询,以便我可以将质量控制过滤10或50?(QC> 50 AND ...)

基本上将下面的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
Run Code Online (Sandbox Code Playgroud)

Cha*_*ndu 7

您需要使用Having子句来过滤聚合字段

试试这个:

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
Run Code Online (Sandbox Code Playgroud)

  • 可以将WHERE子句视为FROM的过滤器,将HAVING子句视为GROUP BY的过滤器(处理聚合的位置). (3认同)