0

特定のStack Overflowユーザーを指定して、受け入れられた回答の数、スコア> 0の回答の数、および受け入れられた回答の数をリストするdata.stackexchange.comのSQLクエリを作成しようとしていますAND / ORスコア > 0 です。

これは私がこれまでに持っているクエリで、受け入れられた回答のみをカウントします:

DECLARE @UserId int = ##UserId##

SELECT 
    Count(a.Id) AS Accepted
FROM
    Posts q
  INNER JOIN
    Posts a ON q.AcceptedAnswerId = a.Id
WHERE
    a.OwnerUserId = @UserId
  AND
    a.PostTypeId = 2

私のユーザー ID (2234742) で実行すると、次の出力が表示されます。

Accepted
70

次のような出力を探しています。

Accepted     Score > 0    Accepted or Score > 0
X            X            X

既存のクエリを編集するには、既存の data.stackexchange.com クエリ ページに移動し、クエリ本文の下にある [fork query] をクリックします。スキーマは右側に表示されます。私はSQLが初めてなので、助けてくれてありがとう!

Accepted or Score > 0: オーバーラップがあるため、これは他の 2 つの列の合計だけではないことに注意してください。

4

1 に答える 1

1
SELECT 
a.id,
sum(case when a.PostTypeId = 2 then 1 end) AS Accepted,
sum(case when a.PostTypeId = someval then 1 end) AS 'score>0',
sum(case when a.PostTypeId = someval then 1 end) AS 'acceptedorscore>0'
FROM Posts q INNER JOIN
Posts a ON q.AcceptedAnswerId = a.Id
WHERE a.OwnerUserId = @UserId
group by a.id, a.PostTypeId

「someval」をposttypeに置き換えて、必要なものを取得してください。ポストタイプでグループ化する必要があります

于 2015-08-05T19:08:21.170 に答える