がテーブルを考える:私は言い換えれば結果にSQLを使用してグループの出現を数え、2つの異なる列をソートされていないセットとして扱う方法は?
green,red: 3
blue,red: 1
を取得したいと思い
CREATE TABLE foo (
thing_a VARCHAR2(15),
thing_b VARCHAR2(15)
);
と行
INSERT INTO foo (thing_a, thing_b) VALUES 'red', 'green';
INSERT INTO foo (thing_a, thing_b) VALUES 'red', 'green';
INSERT INTO foo (thing_a, thing_b) VALUES 'green', 'red';
INSERT INTO foo (thing_a, thing_b) VALUES 'red', 'blue';
を、私はそれぞれの発生をカウントしたいですthing_aとthing_bのグループですが、私は "赤"と "緑"を "緑"と "赤"と同じにしたいと考えています。
私は「解決策」に来て最も近いがこれです:
greenred
bluered
だから、それは正確にグループ分けが、それは何もカウントされませんん生み出す
SELECT DISTINCT (
CASE WHEN thing_a < thing_b
THEN thing_a || thing_b
ELSE thing_b || thing_a END
) as thing FROM foo;
。
これを解決する方法の提案はありますか?
@AugustLilleaas - この回答に「正しい」と表示されていますが、これはあなたの経験を考慮すると驚くべきものです。データに '( 'ab'、 'cde')'と '( 'abcd'、 'e')という順序のないセットがあるとします。このソリューションは、同じものとして扱います。 – mathguy
@mathguy、oops ...私は何と言うことができますか?aとbの間にカンマを追加するのは簡単な編集のようです。 1分後に確認してください。 – jarlh
文字列自体にコンマが含まれていると、これは機能しません。 – mathguy