2012-04-25 6 views
1

いくつかの値を持つSQLテーブルがあります。特定の値の選択カウント

 
NAME   ELEMENT 
122601:1ZIN:AP5|N 
122601:1ZIN:AP5|N 
122601:1ZIN:AP5|C 
122601:1ZIN:AP5|N 
122601:1ZIN:AP5|N 
122601:1ZIN:AP5|N 
123440:1ZPD:CIT|C 
123440:1ZPD:CIT|O 
123440:1ZPD:CIT|O 
123440:1ZPD:CIT|C 
123440:1ZPD:CIT|C 
123440:1ZPD:CIT|O 
123440:1ZPD:CIT|O 
123440:1ZPD:CIT|C 

どのように私はCさんとOさんの数は、例えば、2よりも大きくなっているだけでそれらの名前を選択することができますか? CとO以外のものはどこにありますか?

+0

「?とCとOよりも何も存在しない」_はどういう意味ですか? – gdoron

+0

これは、ELEMENT == CまたはELEMENT == Oの行のみを選択することを意味します。 – annndrey

+0

@annndrey:必要な結果を追加できますか?あなたは何を試しましたか? –

答えて

0

これはあなたのためにそれを行うべき:_何

SELECT NAME FROM TABLE WHERE ELEMENT IN (SELECT ELEMENT     
FROM TABLE WHERE ELEMENT IN('C', 'O') GROUP BY ELEMENT     
HAVING COUNT(ELEMENT) > 2) 
+0

@gdoron:これは 'SELECT Element'を持っています、あなたの名前は' SELECT Name'です。 –

+0

@ypercube ...私はあなたのコメントを理解していません。私は、アンドレイが名前を選びたいと思う。 – MikeTWebb

+0

はい、目的は、特定の要素がある場合は特定の発生を伴う名前を取得することです – annndrey

0
SELECT T.NAME 
FROM TABLE_NAME T 
WHERE T.ELEMENT IN (SELECT TT.ELEMENT 
        FROM TABLE_NAME TT 
        WHERE TT.ELEMENT IN ('C', 'O') 
        GROUP BY TT.ELEMENT 
        HAVING COUNT(TT.ELEMENT) > 2) 
+0

**なぜ落選ですか?**あなたがコメントなしでdownvotedした場合、あなたは何もしませんでしたが、1つのrep pointを失ってしまいました... – gdoron

+0

TT.NameはGroup Byリストにないのでこのエラーはありません? – MikeTWebb

+0

@Gdoron:コメントはありますか? –

0

わからないこれらが最も最適化されている場合は...ある

以上2 Cの

SELECT NAME, LENGTH(ELEMENT) - LENGTH(REPLACE(ELEMENT, 'C', '')) as countC FROM table HAVING countC > 2; 

のみCとOの要素で

SELECT NAME, ELEMENT REGEXP "^[CO]+$" AS hasCO FROM table having hasCO = 1; 

テストされていませんが、私は彼らが正しいと思います

関連する問題