2013-10-05 66 views
0

我有一個5字段的表。每個字段可以存儲從1到59的數字。mySQL在多個字段上計數值的發生。怎麼樣?

與Excel中的countif類似,我如何統計在所有5個字段中顯示的1-59的數字?

下面是occurances的在所有五個領域的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 

希望我是有道理的。

+0

你要什麼,你輸出的樣子? 59行(每位數字1)以及表中該值在記錄的所有五個字段中顯示的頻率)? – AgRizzo

+0

是的。這正是我需要的。 – ASPiRE

+0

這裏沒有答案嗎? – AgRizzo

回答

1

這裏有一個答案,有一個解決方案。我認爲這只是一個變化。

第一步:創建一個號碼錶(1個字段,稱爲ID 59次的記錄(1值-59))

第二步:

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 
0

兩步法過程如何?假設一個名爲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次,一次爲每個價值。大多數情況下你可以使用循環。然後你可以從summary_table中選擇

select * 
from summary_table 
order by id 

這樣做。我將這個SQL的涵蓋範圍留給了那些知道數據庫正在使用的存儲過程。

0

ALL()函數,它返回true如果前面的操作者對於所有參數是true,使查詢特別優雅和簡潔。

爲了找到計數特定數量(例如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 
相關問題