1

生データを含むテーブルがあります。不要な余分なデータをチェックするために、50行を超えるデータを持つID(tickeridは列、earnessdataはテーブル)を特定しようとしています。(別のテーブル、earnesstickersからの)現在のすべてのティッカーIDをループし、50行を超えるデータを持つIDのみを選択する必要があります。IDで*を選択することはできますが、すべてのIDを反復処理する方法がわかりません。

4

2 に答える 2

5

GROUP BYそれぞれごとにグループ化するために使用できます。これにより、 / / /etc...などのtickeridそれぞれに関連する集約情報にアクセスできます。tickeridCOUNTSUMAVG

あなたの目的のために、私たちはを使用しなければなりませんCOUNT

次に、HAVINGtickeridは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 に答える