我有一张名为bets的表。我想根据多列的不同值返回记录,然后对该记录集执行聚合查询。当然,这个查询并不起作用,但应说明我尝试做的事情:
Bet.select('distinct user_id, event_id, bet_line_id, state, pick').
select("user_id, 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')
如果我不清楚我在问什么,我会提供一个更具说明性的例子。
使用Rails 3.2和postgres,顺便说一句。
答案 0 :(得分:1)
我确信还有其他方法,但我会用Common Table Expression解决这个问题。您可以手动编写SQL或查看postgres_ext gem:https://github.com/dockyard/postgres_ext/blob/master/docs/querying.md