0

5つのフィールドを持つテーブルがあります。各フィールドには、1 ~ 59 の数値を格納できます。

Excel の countif と同様に、1 ~ 59 の数字が 5 つのフィールドすべてに表示される回数をカウントするにはどうすればよいですか?

5 つのフィールドすべてでの数値 1 の出現回数の例を次に示します。

SELECT SUM(pick_1 = 1 OR pick_2 = 1 OR pick_3 = 1 OR pick_4 = 1 OR pick_5 = 1) AS total_count_1
FROM tbldraw

うまくいけば、私は理にかなっています。

4

3 に答える 3

1

ここに解決策がある答えがありました。これは単なるバリエーションだと思います。

ステップ 1: 数値テーブルを作成する (id と呼ばれる 1 フィールド、59 レコード (値 1 ~ 59))

ステップ2:

SELECT numbers_table.number as number
  , COUNT(tbldraw.pk_record)
FROM numbers_table
LEFT JOIN tbldraw
 ON numbers_table.number = tbldraw.pick_1
   OR numbers_table.number = tbldraw.pick_2
   OR numbers_table.number = tbldraw.pick_3
   OR numbers_table.number = tbldraw.pick_4
   OR numbers_table.number = tbldraw.pick_5
GROUP BY number
ORDER BY number
于 2013-10-05T14:58:40.490 に答える
0

2段階のプロセスはどうですか?と呼ばれるテーブルを想定するとsummary_table ( int id, int ttl)、気になる各数値について...

insert into summary_table values (1,
    (select count(*)
     from table
     where field1 = 1 or field2 = 1 or field3 = 1 or field4 = 1 or field5 = 1))

これを 59 回、値ごとに 1 回行います。ほとんどの場合、ループを使用できます。次に、summary_table から選択できます

select *
from summary_table
order by id

それはそれを行います。どのデータベースが使用されているかを知っている人のために、この SQL のカバーをストアド プロシージャに残します。

于 2013-10-05T14:37:37.483 に答える
0

先行する演算子がすべてのパラメーターに対するものである場合ALL()に返される関数は、クエリを特に洗練された簡潔なものにします。truetrue

特定の数 (例: 3) のカウントを見つけるには:

select count(*)
from tbldraw
where 3 = all (pick_1, pick_2, pick_3, pick_4, pick_5)

そのようなすべての数のカウントを見つけるには:

select pick_1, count(*)
from tbldraw
where pick_1 = all (pick_2, pick_3, pick_4, pick_5)
group by pick_1
于 2013-10-05T17:26:27.300 に答える