RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [DB] [問題] 請問得獎名單地理區域平均篩選怎麼做 ?   字型大小:||| 
jocosn
白銀驢友
等級: 15等級: 15等級: 15等級: 15等級: 15


今日心情

 . 積分: 1386
 . 精華: 2
 . 文章: 2945
 . 收花: 9537 支
 . 送花: 3671 支
 . 比例: 0.38
 . 在線: 1295 小時
 . 瀏覽: 19041 頁
 . 註冊: 7295
 . 失蹤: 1297
#1 : 2012-9-26 05:04 AM     全部回覆 引言回覆

朋友有個問題,網路投票資料庫有一個投票者資料表格,假設有 3000 人,我要篩出 200 個寄發贈品,請問要怎麼平均的每個地理區域都有人篩選出,湊足 200 位得獎人?


網路票選有一個投票者資料表格,
欄位: 「編號(auto increament)、投票者姓名、地址、電話」這 4 個欄位。


篩選問題:
如何平均分配地區?
      例如台北市、新北市、澎湖、台東每個縣市都要有得獎者。
      使用亂數篩選,如果某些地區,例如澎湖,只有零星幾個投票者,容易篩選不到。但是只要那個縣市有人投票,篩選時,就要有那個投票地區人數出來。

---------------------------
目前只想到用 趴數 % 去限定最低篩選人數。但是這樣有辦法讓 total 得獎人數=200 嗎?不限使用資料庫 SQL 或哪家資料庫,從資料庫篩出後再用 javascript 篩出也可以。或是給個方向, goole 查循條件是甚麼。


-----------------------------------------------------
09/26 改一下問題描述:
要怎麼各縣市都有得獎者抽出,然後湊足 200 位得獎人?

[jocosn 在  2012-9-26 04:47 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
jocosn
白銀驢友
等級: 15等級: 15等級: 15等級: 15等級: 15


今日心情

 . 積分: 1386
 . 精華: 2
 . 文章: 2945
 . 收花: 9537 支
 . 送花: 3671 支
 . 比例: 0.38
 . 在線: 1295 小時
 . 瀏覽: 19041 頁
 . 註冊: 7295
 . 失蹤: 1297
#2 : 2012-9-26 04:45 PM     全部回覆 引言回覆

抱歉,我的題意沒說清楚。
今天要從 3000 人中抽出 200 人,但是「每個縣市都要有人被選出」,我說的平均是指這個。因為如果只是用亂數選出,有些縣市投票者只有5個,一般都不容易選到。

像這樣:
MySQL
SELECT col1 FROM votetable ORDER BY RAND() LIMIT 200;

不管 votetable 是否有按地區排序,有些弱勢地區,投票人數太少,都不容易篩到。但是朋友說,每個地區都要篩到至少 1 人。但是我又想到一個問題,該縣有 800 個投票,可能這 200 個得獎名額都給他佔光了。


至於該縣市要選出幾個人,這個可以自由設定。
例如如果該縣只有 2 個投票,就選出 1 個就好,不能 2 個都選到。重點是只要該縣有人投票,就一定要有至少 1 位得獎者。該縣只有 1 個投票,就一定是他得獎。該縣有 20 個投票,就選出 2~8 個 (自由設定,很自由)。該縣有 500 個投票,選出幾個都好,但是不要得獎比率太多,不然會壓到別縣的得獎人數比率 。這人數比率多寡,可由自己設定,但也是設計重點。可能某一縣像新北市有 2000 人投票,如果新北市得獎者就抽出 190 名那就慘了。如果另一縣像是台南縣有 800 人投票,但是抽出的人數比新北市還多,投票人數少的抽出的比投票人數多的縣數人數還多,那也慘了。
主要就是這其中的演算邏輯不知道怎麼設計。如何得獎名單出來,可以讓人知道這是各區亂數抽出,可能某縣投票者比較多所以得獎者比較多一點沒關係,但又不能太偏重某一區,多很多就不行。至於怎樣叫多很多,怎樣叫沒有多很多只是多的剛剛好,只要你可以說的天花亂墜,讓人心服就行。

所以讓看題的人誤會,真是抱歉,我應該改成,各縣市都有抽出得獎者。但各縣得獎人數比率不一定。

我的 SQL 超弱,假設先不管執行效率。
--------------------------------------------------------------------------

[jocosn 在  2012-9-26 05:20 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
jocosn
白銀驢友
等級: 15等級: 15等級: 15等級: 15等級: 15


今日心情

 . 積分: 1386
 . 精華: 2
 . 文章: 2945
 . 收花: 9537 支
 . 送花: 3671 支
 . 比例: 0.38
 . 在線: 1295 小時
 . 瀏覽: 19041 頁
 . 註冊: 7295
 . 失蹤: 1297
#3 : 2012-9-26 10:16 PM     全部回覆 引言回覆

watchme 兄的解法可能比較沒辦法,因為我的題意讓大家都看不懂。非常抱歉。

我剛剛在洗澡時想到一個,就是把問題丟給對方,
我先用 group、count 統計出來各縣市投票人口數,然後讓對方自己選各縣市得票人數,像這樣:

STEP 1 -- 列出各縣+直轄市投票數與比率。由低往高排。

澎湖       投票人數 2 人            佔總投票數比率 0.07%         估計抽出的得票人數___人     剩餘名額___人
台東縣   投票人數 30 人         佔總投票數比率  2.9%         估計抽出的得票人數___人     剩餘名額___人
嘉義縣   投票人數 88 人         佔總投票數比率 17%         估計抽出的得票人數___人     剩餘名額___人
............ 略
台北市   投票人數 500 人       佔總投票數比率 17%         估計抽出的得票人數___人     剩餘名額___人
新北市   投票人數 1000 人    佔總投票數比率 34%         估計抽出的得票人數___人     剩餘名額___人
Step 2

估計抽出的得票人數___人    →這部份由對方自己輸入
剩餘名額___人                        →這部份由電腦幫你算出
STEP 3
輸入完畢後,按下 submit 就開始依據自行輸入的得獎人數作篩選。

這樣簡單多了。
但是這樣分 3 步驟解,我覺得不專業很遜。因為有幾個縣市要抽獎,第 3 步驟就要下幾個相同的 SQL 指令。

感覺這根本是作假的網路抽獎,我真是服了我那朋友的抽獎條件,他給我看上一次的網路抽獎得獎名單(公家機關的網站,每年都會招標找人維護網站),我看了第 5 次左右突然發現怎麼剛好每個縣市都有得獎者,感覺好神,一問之下才發現他的得獎條件好詭異。不知這是不是公家機構的巧思還是大家都是這樣搞網路投票。
這樣的話,大樂透各縣市都會有得獎者,以 17 期或其倍數做個輪迴,因為全台灣目前縣+直轄市有 17 個。

[jocosn 在  2012-9-26 10:23 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-6-17 06:59 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.021185 second(s), 7 queries , Qzip disabled