生データを含むテーブルがあります。不要な余分なデータをチェックするために、50行を超えるデータを持つID(tickeridは列、earnessdataはテーブル)を特定しようとしています。(別のテーブル、earnesstickersからの)現在のすべてのティッカーIDをループし、50行を超えるデータを持つIDのみを選択する必要があります。IDで*を選択することはできますが、すべてのIDを反復処理する方法がわかりません。
質問する
3670 次
2 に答える
5
GROUP BY
それぞれごとにグループ化するために使用できます。これにより、 / / /etc...などのtickerid
それぞれに関連する集約情報にアクセスできます。tickerid
COUNT
SUM
AVG
あなたの目的のために、私たちはを使用しなければなりませんCOUNT
。
次に、HAVING
句tickerid
は50行以下のを除外します。
SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
これによりtickerid
、50行を超えるsのリストが表示されますtickerid
が、このリストにあるsのすべての行と情報を表示する場合は、上記のクエリをに組み込むことで、このリストに対してテーブルを結合できます。 :
SELECT a.*
FROM earningsdata a
INNER JOIN
(
SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
) b ON a.tickerid = b.tickerid
于 2012-07-25T07:32:59.757 に答える
0
SELECT tickerid
FROM earningstickers
WHERE tickerid
IN
(SELECT tickerid
FROM earningsdata
GROUP BY tickerid
HAVING COUNT(*) > 50
)
于 2012-07-25T07:39:27.777 に答える