如題,比如說我需要一個使用者積分總榜,月榜,周榜
我覺得我就需要記錄下使用者30天內的積分變化..
但是建表該怎麼去建,來記錄這個變化
上面是原題
非常,非常感謝各位的答案.
我重新梳理下我的需求,這是一個遊戲勝負增加積分的系統,無負分機制(負方得0分)
然後需要在首頁展示總/月/周 ,積分獲得者最高的前10名
我一開始提這個問題,是因為我拿不準是否要建一個詳細的積分變化表,因為後面的操作讓我覺得略微有點繁瑣
就如各位所說,首先假設我建一張表叫"積分變化明細表"
流水號 / 使用者id / 積分變化/理由 / 時間
這樣做的話,我要統計出總/月/周 前10,就需要每天去執行一次更新操作:
如果按照這種方式去做,我是這樣想的:
1,遍曆該表,將本月(周)內登入有積分變動的使用者id拿出來,組成一個列表
2,開始以上一步的使用者列表為基礎開始迴圈,在"積分變化明細表"內,用今天的積分減去本月初(和周一)的積分,得到該使用者在此時間段內的積分增加值,儲存到一個暫存資料表內,如:
使用者id / 周增加 / 月增加
3,將上一步產生的暫存資料表,按周增加欄位排序,取前10,再按月增加排序,取前10.
得到我想要的結果.
因為我對MySQL的瞭解僅僅限於增刪改查的水平,覺得上面這種方式有點小繁瑣
所以想提問瞭解一下是否有更加方便的方式來實現這個需求
回複內容:
如題,比如說我需要一個使用者積分總榜,月榜,周榜
我覺得我就需要記錄下使用者30天內的積分變化..
但是建表該怎麼去建,來記錄這個變化
上面是原題
非常,非常感謝各位的答案.
我重新梳理下我的需求,這是一個遊戲勝負增加積分的系統,無負分機制(負方得0分)
然後需要在首頁展示總/月/周 ,積分獲得者最高的前10名
我一開始提這個問題,是因為我拿不準是否要建一個詳細的積分變化表,因為後面的操作讓我覺得略微有點繁瑣
就如各位所說,首先假設我建一張表叫"積分變化明細表"
流水號 / 使用者id / 積分變化/理由 / 時間
這樣做的話,我要統計出總/月/周 前10,就需要每天去執行一次更新操作:
如果按照這種方式去做,我是這樣想的:
1,遍曆該表,將本月(周)內登入有積分變動的使用者id拿出來,組成一個列表
2,開始以上一步的使用者列表為基礎開始迴圈,在"積分變化明細表"內,用今天的積分減去本月初(和周一)的積分,得到該使用者在此時間段內的積分增加值,儲存到一個暫存資料表內,如:
使用者id / 周增加 / 月增加
3,將上一步產生的暫存資料表,按周增加欄位排序,取前10,再按月增加排序,取前10.
得到我想要的結果.
因為我對MySQL的瞭解僅僅限於增刪改查的水平,覺得上面這種方式有點小繁瑣
所以想提問瞭解一下是否有更加方便的方式來實現這個需求
這個需求需要多張表來實現。
簡單梳理一下需求:
1.系統有多個使用者。不知道你的行業,使用者以中等規模看(50-500萬,通常在連鎖、零售業會有,如果是互連網行業可能更多;也可能是遊戲等)
2.每一使用者根據其行為獲得積分(可能是註冊、簽到、購物、儲值、推薦。。。等)
3.積分可以在某些情境下消費(減少積分)
4.使用者需要查看其即時的當前積分餘額以及積分變化記錄(類似銀行賬戶)
5.平台需要有積分榜(總積分榜、月積分榜、周積分榜),可能是餘額榜,也可能是積分獲得榜。
那麼,通常需要這幾張表:
1.積分異動明細表。記錄積分的變化情況(增、減)、發生時間、來源、來源描述、使用者等。
2.積分統計表。以月、周為單位的積分統計。需要記錄周期、使用者、積分增加、積分消費、積分餘額。看業務需要也許還要增加上期餘額。這個表不是一張,推薦周是周統計表,月是月統計表。周、月統計均通過批次作業每周期後執行。如果統計過後,異動明細有調整(如,某渠道的積分沒有及時獲得、或是積分記錄出錯需要更改),則發生日期後的周、月統計可能要重新計算。當然,也可以調整在當期(這個參考財務概念)
最後,列出來表結構吧:
1.積分異動明細表(使用者號、業務序號流水、發生時間、來源(各業務)、來源描述(各業務詳細說明,如單號)、變化方向(增、減)、積分、備忘)
2.周積分統計表(使用者號、周序號(可以是4位年+2位周)、上期餘額、本期增加積分、本期消費積分、本期積分餘額)
3.月積分統計表(使用者號、月序號(4位年+2位月)、上期餘額、本期增加積分、本期消費積分、本期積分餘額)
以上,請參考。
時間 使用者id 積分變化
使用者ID,原積分,積分類型(如幹了什麼),積分變化(+n或-n),現積分,發生時間