Sql Rails—基于多列对不同记录运行聚合查询
我有一张叫贝茨的桌子。我希望根据多列的不同值返回记录,然后对该记录集执行聚合查询。当然,这个查询不起作用,但应该说明我正在尝试做什么:Sql Rails—基于多列对不同记录运行聚合查询,sql,ruby-on-rails,postgresql,unique,aggregate-functions,Sql,Ruby On Rails,Postgresql,Unique,Aggregate Functions,我有一张叫贝茨的桌子。我希望根据多列的不同值返回记录,然后对该记录集执行聚合查询。当然,这个查询不起作用,但应该说明我正在尝试做什么: 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'
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,顺便说一句。我肯定还有其他方法,但我会用一个通用的表表达式来解决这个问题。您可以手工编写SQL,也可以查看postgres_ext gem:Thx中的链接。我宁愿避免添加另一个gem,除非没有令人满意的sql等价物。用普通sql很容易做到。该链接显示了一个您需要的原始SQL示例。我刚刚注意到在我写了上述注释后生成的普通SQL。我会试一试的!