2017-11-03 7 views
1

こんにちは、私はデータセットで次の操作を実行しようとしている私はこのようになります:別の列に関してはそれぞれのユニークな値の数を数える(オラクルG11)

letter number 
a 1 
a 2 
a 1 
a 1 
a 3 
a 4 
a 2 
a 4 
b 1 
b 3 
b 4 
b 3 
b 2 
b 5 
b 1 
b 1 

は、データセットは結果であり、私は実行しているサブクエリの。私はこのようにするためにデータをフォーマットしたいので、COL 2をカウントアップで私はフラグ文字列内の各値の高いより3

letter number number_count 
    a 1 3 
    a 2 2 
    a 3 1 
    a 4 2 
    b 1 3 
    b 2 1 
    b 3 2 
    b 4 1 
    b 5 1 

ので、カウントを持っているものは、私はそれぞれ固有の番号を必要とすることができます値そのものの横に表示されます。 私はこれを試して解決するために多くの検索をしてきましたが、数のバリエーションを得ることはできません、別々にカウントしたり、他のコードを動作させることができないため、問題を過小評価したり、どのように私の検索をフレーズするので、私が探している答えを見つける。

私がOracle 11gデータベースにアクセスするには、SQL Developerを使用しています。

答えて

0

だから私は、次はあなたが探しているものだと思う:

select letter, number, count(letter) as number_count from table group by letter, number; 
+0

これは私が必要としていたように思われます。ご協力いただきありがとうございます。私は「グループ」を正しく理解していないために困っていたようです。 –

0

私はあなたがフラグを立てていますつの結果を持っています例を示すために、2本のデータ・ラインを追加しました。

WITH 
     sub_q AS (
      SELECT 'a' AS letter_column, 1 AS value_column FROM Dual UNION ALL 
      SELECT 'a', 2 FROM Dual UNION ALL 
      SELECT 'a', 1 FROM Dual UNION ALL 
      SELECT 'a', 1 FROM Dual UNION ALL 
      SELECT 'a', 3 FROM Dual UNION ALL 
      SELECT 'a', 4 FROM Dual UNION ALL 
      SELECT 'a', 2 FROM Dual UNION ALL 
      SELECT 'a', 4 FROM Dual UNION ALL 
      SELECT 'b', 1 FROM Dual UNION ALL 
      SELECT 'b', 3 FROM Dual UNION ALL 
      SELECT 'b', 4 FROM Dual UNION ALL 
      SELECT 'b', 3 FROM Dual UNION ALL 
      SELECT 'b', 2 FROM Dual UNION ALL 
      SELECT 'b', 5 FROM Dual UNION ALL 
      SELECT 'b', 1 FROM Dual UNION ALL 
      SELECT 'b', 1 FROM Dual UNION ALL 
      SELECT 'b', 1 FROM Dual UNION ALL 
      SELECT 'b', 1 FROM DUal 
    ) 

SELECT 
     letter_column, 
     value_column, 
     COUNT(value_column) AS value_count, 
     CASE 
      WHEN COUNT(value_column) > 3 THEN 1 
      ELSE NULL 
     END AS flag_gt_3 
FROM sub_q 
GROUP BY 
     letter_column, 
     value_column 
ORDER BY 
     letter_column, 
     value_column 
; 
+0

- COUNT(value_column)を使用すると、すべての行に値の列があるとみなされます。値の列にNULLを含む行があり、特定の文字に3以上のNULLがある場合は結果にフラグを付けます。 COUNT(value_column)ではなくCOUNT(*)を使用する必要があります。 NULLを評価することはできません。そのため、COUNT(value_column)は異なる結果を提供します – dreamwork

関連する問題