【发布时间】:2018-11-05 15:05:39
【问题描述】:
我有一个很大的用户表,我正在尝试按街道对城镇内的所有用户进行分组,并通过 postgres 和 rails 获得计数。以下为我提供了正确的数据,但我想知道是否可以获得更好的输出:
User.group(:town,:street).count ###Gives a large hash of key/value pairs with town_name repeated each time for every grouped street like {['TOWN_NAME', 'STREET_NAME']=>'#ofUsers'}
所以不要这样:{['BETHPAGE', 'JACKSON AVE']=>372, ['BETHPAGE', 'WILLIAM ST']=>28}
我想要{ 'BETHPAGE'=>{['JACKSON', 372],['WILLIAM ST', 28]} }
是否有更好的查询可以以 TOWN_NAME 将用作键一次的格式输出此信息,并且每条街道及其计数在数组中给出,例如:
{ 'TOWN_NAME' => {['STREET_NAME', '#ofUsers'], ['STREET_NAME', '#ofUsers']}
【问题讨论】:
-
您要么必须更改 SQL 查询,要么可能直接使用 Ruby 代码转换地图。
-
是的,我认为通过 Ruby 进行迭代可能是唯一的选择,但我希望避免这种情况,因为结果集可能很大。