data.stackexchange.comでクエリを作成しようとしましたが、1000を超えて表示された投稿を投稿したユーザーの割合あるクラスのバッジを持っている人。単一AND条件でWHERE条件と同じ出力が得られます
問題は:
SELECT
TOP 1000
Class, (Count(Badges.UserId)* 100/(SELECT COUNT(*) From Badges)) AS Percentage
FROM Badges
WHERE Badges.UserId IN (SELECT Posts.OwnerUserId FROM Posts
INNER JOIN
Badges ON Posts.OwnerUserId = Badges.UserId
WHERE ViewCount > 1000)
GROUP BY Class
ORDER BY Class
クエリでAND::私はAND ViewCount > 1000
を書く場合、私はそれが
WHEREでクエリをなぜ起こるか私は理解していないWHERE ViewCount > 1000
と同じ結果を得る
SELECT
TOP 1000
Class, (Count(Badges.UserId)* 100/(SELECT COUNT(*) From Badges)) AS Percentage
FROM Badges
WHERE Badges.UserId IN (SELECT Posts.OwnerUserId FROM Posts
INNER JOIN
Badges ON Posts.OwnerUserId = Badges.UserId
AND ViewCount > 1000)
GROUP BY Class
ORDER BY Class
出力(何らかの理由でb OTHの場合):
1クラス - 2パーセント
2級 - 15%
3クラス - あなたのON
状態で2つの式を接続するAND
を使用して45%
あなたは、あなたの質問にテーブル定義を追加してもらえますか? –
INNER JOINを使用しているので明らかですが、AND、WHERE条件の両方で同じ結果を返しますが、LEFT JOINでは異なる動作をして別の結果セットを返すことができます。 – Susang
あなたはここでどのような論理的衝突が起こっているかを詳しく教えてください。 –