Wie benutze ich Count (*) in einer Wo -Anweisung?
-
27-10-2019 - |
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
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
.