2

これが機能しない理由と修正方法がわかりません。書き込みなど、さまざまなことを試しました

select COUNT(p.OwnerUserId)

しかし、それは機能せず、エラーメッセージがわかりません。MS SQL は使用していません (SQLite と MySQL を使用しています)。

QC を 10 または 50 でフィルタリングできるようにするには、このクエリをどのように記述すればよいですか? (QC > 50 AND ...)

基本的に、以下の SQL をこの URL にプラグインして実行すると、結果に 1 が表示されます。 https://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
4

3 に答える 3

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
于 2011-01-28T23:47:37.663 に答える
3

集計を使用している場合は、having代わりに を使用する必要がありwhereます。

于 2011-01-28T23:47:27.357 に答える
1
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
于 2011-01-28T23:48:05.653 に答える