2016-04-29 14 views
1

私はSQLの新機能やトレーニングとして、スタック交換データエクスプローラで遊びたいだけです。 「トンの仕事:なぜSQLからの入力としてselectテーブルを使うことができないのですか

SELECT count(*) 
FROM (SELECT id 
     FROM Posts 
     WHERE PostTypeId = 2 AND OwnerUserId = '##UserId##') 

私の主な目標は、その答えは、1000以上ですが、ノウハウのために、私はそのコードの問題が何であるかを把握することはできません、なぜ私は取得していないユーザーを見つけることですユーザーの回答数...

+0

ちょうど追加あなたの声明の最後に "foobar"と書かれていればうまくいくはずです。 SQL文はサブクエリで作成した新しいテーブルの別名を設定する必要があります – Webeng

+0

@Webeng tnx man、私の答えは;) –

答えて

2

Do a GROUP BYおそらく、あなたはsum(points) > 1000または類似のようなhaving句内の他の集約関数を、必要以上の1000

select id 
from Posts 
group by id 
having count(*) > 1000 

でのみidを返すようにHAVINGを使用してください。

+0

tnxは応答しますが、あなたのコードはANDの残りの部分を持つべきではないと思います。 sth else、stackexchangeサーバーでurコードを実行すると、何も得られません。あなたのコードを再度チェックしますか? –

+0

WHERE句を削除しました。 – jarlh

+0

エラーが修正されましたが、結果として何も得られません。 –

0

SELECT ID、投稿からCOUNT(*) PostTypeId = 2 AND OwnerUserId = '##ユーザーID ##'。あなたの派生テーブルのエイリアスを設定する必要が

2

select count(*) 
from (SELECT id 
    FROM Posts 
    WHERE PostTypeId = 2 AND OwnerUserId = '##UserId##') s 
+0

答えてくれてありがとう、今あなたは私のテーブルの列を参照することができます??私は新しい行でそれを使用したいです.... –

+0

あなたは何を意味するのか分かりません... 'select s.id'おそらく? –

+0

親愛なる私の友人、私は私の目標を達成するための方法を見つけることができた、私は、以下のコードを投稿する、助けてくれてありがとう;) –

1

私の友人の助けによって、私は私のproblem.the重要な部分を扱うことができるSQL文は新しいテーブルのエイリアスを設定するために私たちを必要としていますサブクエリで作成されたものです。その後、我々は好きな場所私たちは、このエイリアスを使用することができ、このコードは私の主な目標を達成するために動作します:

select x.OwnerUserId 
from (select Posts.OwnerUserId,s.cnt 
     from Posts inner join (SELECT Posts.OwnerUserId, count(OwnerUserId)as cnt 
          FROM Posts 
          WHERE PostTypeId = 2 
          group by Posts.OwnerUserId) as s on Posts.OwnerUserId=s.OwnerUserId)as x 
where x.cnt>100 
group by x.OwnerUserId 

誰もがより良い性能を持って、より良い方法を見つけることができれば、plzはここでそれを共有します。)

関連する問題