2

PHPMyAdmin に 6 つの列を持つテーブルがあります。各セルには名前があります。

ここで、各列にそれぞれの名前がある頻度を知りたいと思います。

例えば:

column1  column2  column3
name1    name3    name2
name1    name2    name2
name2    name3    name1

次に、次のリストが必要です。

column1           column2   column3
name1 - 2         0         1
name2 - 1         1         2
name3 - 0         2         0

私は遊んでみました:

SELECT Count(*) FROM aanmeldingen2013 WHERE column1 LIKE name1.

この出力を生成するための SQL コードを手伝ってくれる人はいますか?

4

2 に答える 2

2

これが最も効率的な方法だと思います:

select name,
       sum(n = 1) as Column1Cnt,
       sum(n = 2) as Column1Cnt,
       sum(n = 3) as Column1Cnt
from (select (case when n.n = 1 then column1
                   when n.n = 2 then column2
                   when n.n = 3 then column3
              end) as name,
             n.n
      from t cross join
           (select 1 as n union all select 2 union all select 3) n
     ) t

union allこれは、元のテーブルを 1 回だけスキャンするため、クエリよりも効率的です。ここでは、3 つの列の例を示しました (サンプル データのように)。これを 6 つの列に一般化する方法は明らかです。

于 2013-08-06T13:32:11.267 に答える
0

このクエリを確認してください

 SELECT COUNT( * ) FROM 'tbl_name' where column1='name1';
于 2013-08-06T13:35:02.327 に答える