2016-07-10 9 views
0

私の頭をこすって傷つける。SUMの結果をGROUP BY HAVING

次のクエリは、(に等しいテーブルで発生する2チーム以上の3倍がある)二つの結果3,5を返す...しかし、私はそれが私が試した8

を返却する必要がありますGROUP BY &が運営されていますが、幸運はありませんか?

SELECT SUM(play_in) AS Total FROM Transfer WHERE id_str='10' GROUP BY team HAVING COUNT(*)>=3 

これを試しても応答はありませんか?

SELECT SUM(Total) FROM (SELECT SUM(play_in) AS Total FROM Transfer WHERE id_str='10' GROUP BY team HAVING COUNT(*)>=3) AS The_Total 

は、私が得たすべてだったことのないようThe_Totalを追加する必要がありました「すべての派生テーブル、独自の別名を持っている必要があります」

+0

単一のクエリで必要な結果を得ることはできません。 'SUM(Total)FROM(...)'を選択する必要があります(あなたが投稿したクエリの省略記号を置き換えます)。 – axiac

+0

運がよろしいですか?最初の質問を修正しました – Tatters

+0

あなたはどのRDBMSを使用していますか? –

答えて

0

は最後に次の初期のステートメントに追加してください:「ROLLUP WITH」。これにより、結果に合計を含むエントリが追加され、チーム列の値としてNULLが設定されます。

欠点は、グループごとにnullを持つエントリだけを表示できないことです。クライアントアプリケーションでこれをフィルタリングする必要があります。

+0

チームによってROLLUP?それを受け入れたが結果を返さなかった? – Tatters