首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Ruby中postgresql的SELECT查询,获得嵌套良好的分组散列

基于Ruby中postgresql的SELECT查询,获得嵌套良好的分组散列
EN

Stack Overflow用户
提问于 2014-06-14 00:50:35
回答 1查看 74关注 0票数 0

我有一个来自Postgresql的SELECT查询,它返回的结果如下所示:

代码语言:javascript
复制
 brand | model| firmware | direction | mbps 
-------+------+----------+-----------+------
 Cisco | 7602 | 7.2      | up        | 283
 Cisco | 7602 | 7.3      | up        | 192
 Cisco | 7602 | 7.2      | down      | 200  
 Cisco | 7602 | 7.3      | down      | 107 
 Cisco | 7602 | 7.2      | bi        | 249  
 Cisco | 7602 | 7.3      | bi        | 151  

我希望在一个很好的嵌套散列中得到结果,该哈希将对品牌、模型、固件进行分组,然后显示每个方向的mbps值。我想展示嵌套散列的示例,但现在有点不知所措,甚至不知道如何正确地构造它。

当前,我在运行该查询时得到的哈希如下所示:

代码语言:javascript
复制
{"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.2", "direction"=>"up", "mbps"=>"283"}
{"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.3", "direction"=>"up", "mbps"=>"192"}
{"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.2", "direction"=>"down", "mbps"=>"200"}
{"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.3", "direction"=>"down", "mbps"=>"107"}
{"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.2", "direction"=>"bi", "mbps"=>"249"}
{"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.3", "direction"=>"bi", "mbps"=>"151"}

我希望我的问题有意义。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-14 01:09:29

你可以像这样建立分组

代码语言:javascript
复制
rows = [{"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.2", "direction"=>"up", "mbps"=>"283"},
        {"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.3", "direction"=>"up", "mbps"=>"192"},
        {"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.2", "direction"=>"down", "mbps"=>"200"},
        {"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.3", "direction"=>"down", "mbps"=>"107"},
        {"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.2", "direction"=>"bi", "mbps"=>"249"},
        {"brand"=>"Cisco", "model"=>"7602", "firmware"=>"7.3", "direction"=>"bi", "mbps"=>"151"}]
data = {}
rows.each do |row|
  data[row['brand']] ||= {}
  data[row['brand']][row['model']] ||= {}
  data[row['brand']][row['model']][row['firmware']] ||= {} 
  data[row['brand']][row['model']][row['firmware']][row['direction']] = row['mbps']
end

puts data

产出:

代码语言:javascript
复制
{"Cisco"=>{"7602"=>{"7.2"=>{"up"=>"283", "down"=>"200", "bi"=>"249"}, "7.3"=>{"up"=>"192", "down"=>"107", "bi"=>"151"}}}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24215602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档