こんにちは私はこのようなデータセットを使って次のことをしようとしています:
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
データセットは、私が実行したサブクエリの結果です。私はこのようにデータを書式化したいので、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
だから、文字列の各値に対して、私はcol 2のそれぞれのユニークな数値がカウントされ、値そのものの横に表示されます。 私はこれを試して解決するために多くの検索をしてしまったし、カウント数を変えたり、別のコードを上書きしたり、他のコードを動作させることができないので、問題を過小評価したり、私が探している答えを見つけられるようにフレーズの検索に。
どんな助けでも大いに感謝されます、私はoracle 11gデータベースにアクセスするためにSQL開発者を使用しています。
回答:
回答№1は0だから私はあなたが探している以下のものだと思う:
select letter, number, count(letter) as number_count from table group by letter, number;
回答№2の場合は0
私は2つのデータラインを追加して、フラグを立てた結果が1つある例を示しました。
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
;