【问题标题】:How to calculate percentage between data from two hashes如何计算来自两个哈希的数据之间的百分比
【发布时间】:2013-10-30 06:36:24
【问题描述】:

我有两行代码,每行都输出一个哈希值:一行具有特定于评级的计数(例如 "super""good"),另一行具有所有评级的计数。

具体评分:

Car.send(rating).group("DATE_TRUNC('week', created_at)").order('date_trunc_week_created_at asc').count

全部统计:

Car.group("DATE_TRUNC('week', created_at)").order('date_trunc_week_created_at asc').count

这是第一行代码的输出哈希。第二行输出类似的东西,只是计数更高,因为它计算所有评级,而不仅仅是一个。

{2013-03-11 00:00:00 UTC=>21,
 2013-03-18 00:00:00 UTC=>26,
 2013-03-25 00:00:00 UTC=>22,
 2013-04-01 00:00:00 UTC=>38,
 2013-04-08 00:00:00 UTC=>67,
 2013-09-16 00:00:00 UTC=>1}

如何计算哈希 1 的值与哈希 2 的值的百分比?我知道如何计算百分比 (value1 * 100 / value2),但我不知道如何从哈希中获取值。日期必须保持现在这样。我只需要计算价值的百分比。

编辑:根据要求,2 个哈希 + 预期结果:

哈希 1

{2013-03-11 00:00:00 UTC=>21,
2013-03-18 00:00:00 UTC=>26,
2013-03-25 00:00:00 UTC=>22,
2013-04-01 00:00:00 UTC=>38,
2013-04-08 00:00:00 UTC=>67,
2013-09-16 00:00:00 UTC=>1}

哈希 2

{2013-03-11 00:00:00 UTC=>42,
2013-03-18 00:00:00 UTC=>89,
2013-03-25 00:00:00 UTC=>345,
2013-04-01 00:00:00 UTC=>56,
2013-04-08 00:00:00 UTC=>123,
2013-09-16 00:00:00 UTC=>5}

预期结果 (value hash 1 * 100 / value hash 2)

{2013-03-11 00:00:00 UTC=>50,
2013-03-18 00:00:00 UTC=>29.213,
2013-03-25 00:00:00 UTC=>6.376,
2013-04-01 00:00:00 UTC=>67.857,
2013-04-08 00:00:00 UTC=>54.471,
2013-09-16 00:00:00 UTC=>20}

【问题讨论】:

  • 就我所见,查询不相关。请提供两个简单的示例哈希(hash1 和 hash2)和预期的输出。
  • 你似乎有哈希,但标题提到了数组。
  • 泽,好地方。混合了数组和哈希。对不起!

标签: sql ruby-on-rails ruby hash


【解决方案1】:

如果两个哈希具有相同的键,我认为这样做没有问题:

h3 = Hash.new()
h1.each_key do |key|
  h3[key] = h1[key]*100.0/h2[key]
end

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 2021-12-11
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 2016-02-27
    • 2019-08-12
    • 2013-07-25
    • 2017-10-07
    相关资源
    最近更新 更多