you have to pass case
expression so it will return bigint
value .
Bet.select("user_id, event_id, bet_line_id, pick,
COUNT(CASE WHEN state = 'won' then 1 ELSE null END) AS bets_won,
COUNT(CASE WHEN state = 'lost' then 1 ELSE null END) AS bets_lost,
COUNT(CASE WHEN state = 'pushed' then 1 ELSE null END) AS bets_pushed").
group('user_id, event_id, bet_line_id, pick')