Frage

Ich verstehe nicht, warum das nicht funktioniert und wie ich es beheben kann. Ich habe verschiedene Dinge wie das Schreiben ausprobiert

select COUNT(p.OwnerUserId)

Aber das funktioniert nicht und ich verstehe die Fehler -MSGs nicht. Ich verwende keine MS SQL (ich benutze SQLite und MySQL).

Wie schreibe ich diese Abfrage, damit ich das QC um 10 oder 50 filtern kann? (wo qc> 50 und ...)

Stecken Sie die SQL unten in diese URL ein, führen Sie sie aus und Sie werden 1 in den Ergebnissen sehen.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
War es hilfreich?

Lösung

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

Eine andere Möglichkeit besteht darin, es zu einer Unterabfrage zu machen

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

Andere Tipps

Sie müssen eine Klausel verwenden, um ein aggregiertes Feld zu filtern

Versuche dies:

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

Wenn Sie Aggregate verwenden, sollten Sie verwenden having Anstatt von where.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top