基于Ruby中postgresql的SELECT查询获取嵌套良好且分组良好的哈希
我有一个来自Postgresql的SELECT查询,返回如下结果:基于Ruby中postgresql的SELECT查询获取嵌套良好且分组良好的哈希,ruby,select,hash,Ruby,Select,Hash,我有一个来自Postgresql的SELECT查询,返回如下结果: brand | model| firmware | direction | mbps -------+------+----------+-----------+------ Cisco | 7602 | 7.2 | up | 283 Cisco | 7602 | 7.3 | up | 192 Cisco | 7602 | 7.2 | down | 2
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
{"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"}
我希望得到一个嵌套良好的散列结果,将品牌、型号、固件分组,然后显示每个方向的mbps值。
我想展示嵌套散列的示例,但我现在有点不知所措,甚至不知道如何正确构造它
当前,我从运行该查询中得到的哈希如下所示:
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
{"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"}
我希望我的问题有意义。你可以像这样建立分组
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
产出:
{"Cisco"=>{"7602"=>{"7.2"=>{"up"=>"283", "down"=>"200", "bi"=>"249"}, "7.3"=>{"up"=>"192", "down"=>"107", "bi"=>"151"}}}}
哇,天才们在stackoverflow中游荡,非常感谢,这正是我想要的!你需要展示你是如何向Postgres发出请求的。看起来您是从命令行执行的,而不是使用驱动程序,或者最好是类似ORM的驱动程序。使用Sequel可以很容易地以散列的形式获取数据,因为散列是用于表示行的自然对象。