Ah I think I see what happened.
This looks to give me some data on my test database:
cash_hand_player_statistics.id_hand in (SELECT chps.id_hand from cash_hand_player_statistics chps, cash_cache cc where chps.id_player = cc.id_player and chps.position = 0 and chps.flg_steal_att GROUP BY chps.id_player, chps.id_hand HAVING (( (CASE WHEN sum(cc.cnt_p_open_opp_btn) <> 0 THEN ((((sum(cc.cnt_p_rfi_btn) * 1.0)* 1.0 )/((sum(cc.cnt_p_open_opp_btn) * 1.0)) * 100.0 )) ELSE 0 END) ) >= 60))
And then the same fix for the second one would give you:
cash_hand_player_statistics.id_hand in (SELECT chps.id_hand from cash_hand_player_statistics chps, cash_cache cc where chps.id_player = cc.id_player and chps.position = 8 and chps.flg_blind_def_opp and cc.position_type = 4 GROUP BY chps.id_player, chps.id_hand HAVING (( (CASE WHEN sum(cc.cnt_p_3bet_opp_vs_btn_open) <> 0 THEN ((((sum(cc.cnt_p_3bet_opp_vs_btn_open) * 1.0) - (sum(cc.cnt_p_call_vs_btn_open)* 1.0) - (sum(cc.cnt_p_3bet_vs_btn_open) ))/((sum(cc. cnt_p_3bet_opp_vs_btn_open) * 1.0)) * 100.0 )) ELSE 0 END) ) <= 40))
Both of these now return some data for me.
Edit to add: You can also fiddle with sample size by changing <> 0 to > 10 or some such to require more than 10 data points for a given player. If you were so interested