さまざまな結果から共通の文字列の出現回数を取得する方法を知りたいと思っていました (または、以下の例のように、クエリで OR を使用しています)。
テーブルの例:
id | name | rank
1 | name1 | 1
2 | name1 | 1
3 | name2 | 1
4 | name3 | 1
5 | name1 | 2
6 | name1 | 2
7 | name3 | 2
ここで、カウントを複製せずに、ランク = 1 とランク = 2 の出現回数をカウントする必要があります。
このようなことをしています:
SELECT name, COUNT(DISTINCT name)
AS name_num FROM table WHERE rank = 1 GROUP BY name;
結果は
name1 | 1
name2 | 1
name3 | 1
完璧ですが、他の結果 (つまり、ランク = 1 OR ランク = 2) を含めて、複製せずに各名前から出現回数を取得する必要があります。
テーブルの例とランク = 1 OR ランク = 2 を使用したクエリの例で必要な結果は次のようになります。
name1 | 2
name2 | 1
name3 | 2
私が望む結果を説明しようとします:
name1 is present when rank = 1 (+1) and when rank=2 (+1);
name 2 is only present when rank=1
name3 is present when rank = 1 (+1) and when rank=2 (+1);
出来ますか?