Ich versuche es dir einfach am Beispiel vom 3betvsHero darzustellen:
1. Column: "cnt_p_3bet_vshero" (wäre die Anzahl wie oft er gegen uns 3bettet)
sum(if[cash_hand_player_statistics.flg_p_3bet AND
exists
(select 1
from cash_hand_player_statistics hero
where hero.id_hand = cash_hand_player_statistics.id_hand AND
hero.flg_hero AND
hero.flg_p_first_raise), 1, 0])
2 .Column: "cnt_p_3bet_vshero_opp" (ist die Anzahl wie oft er gegen uns hätte 3betten können)
sum(if[cash_hand_player_statistics.flg_p_3bet_opp and exists
(select 1
from cash_hand_player_statistics hero
where hero.id_hand = cash_hand_player_statistics.id_hand AND
hero.flg_hero AND
hero.flg_p_first_raise), 1, 0])
3. Der eigentliche Stat: "3Bet PF vsHero" (Anzahl tatsächlicher 3bet/Anzahl Möglichkeiten dazu)
(cnt_p_3bet_vshero / cnt_p_3bet_vshero_opp) * 100
1+2 unter Columns neu erstellen, 3 unter Stats erstellen. So sieht erstmal der Stat aus.
Zur Erklärung mal einem der Columns:
sum(if[cash_hand_player_statistics.flg_p_3bet AND <-diese Zeile ist im Prinzip nur eine Kopie vom Standardstat für 3bet
exists von hier->
(select 1
from cash_hand_player_statistics hero
where hero.id_hand = cash_hand_player_statistics.id_hand AND
hero.flg_hero AND
->bis hier ist der Code für vsHero-Stats immer identisch, praktisch der Abgleich das gegen Hero gespielt wurde
hero.flg_p_first_raise) <-hier muss je nach Stat die vorherige Hero-Aktion beschreiben werden, in dem Fall: open raise von Hero
Oder wenn man z.B. FoldvsHero3bet haben möchte dann müsste dort "hero.flg_p_3bet" stehen, für Hero hat ge3bettet.
, 1, 0])