Mysql Rails活动记录没有X作为Y字段
Rails初学者,一个在mysql上工作的查询-选择X作为Y似乎不适用于Rails的查询 字段m1的计数为cnt==>活动记录不存在查询给定mysql上的工作Mysql Rails活动记录没有X作为Y字段,mysql,ruby-on-rails,activerecord,Mysql,Ruby On Rails,Activerecord,Rails初学者,一个在mysql上工作的查询-选择X作为Y似乎不适用于Rails的查询 字段m1的计数为cnt==>活动记录不存在查询给定mysql上的工作 AB.where("m = 1").group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000 ").select("m_timestamp, count(m1) as cnt") AB Load (3.5ms) SELECT m_timestamp, count(m1) as cnt FROM `a_
AB.where("m = 1").group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000 ").select("m_timestamp, count(m1) as cnt")
AB Load (3.5ms) SELECT m_timestamp, count(m1) as cnt FROM `a_b` WHERE (m = 1) GROUP BY UNIX_TIMESTAMP(m_timestamp) DIV 6048000
=> #<ActiveRecord::Relation [#<AB id: nil, m_timestamp: "2014-08-01 22:21:09">, #<AB id: nil, m_timestamp: "2014-10-05 00:15:23">, #<AB id: nil, m_timestamp: "2014-12-20 11:55:45">, #<AB id: nil, m_timestamp: "2015-02-04 23:45:29">, #<AB id: nil, m_timestamp: "2015-04-02 03:51:14">, #<AB id: nil, m_timestamp: "2015-06-19 22:25:06">]>
我希望m_时间戳是上述结果的关键。我怎样才能做到这一点
mysql结果的输出示例如下:
mysql> SELECT m_timestamp, count(user_id) as cnt FROM `a_b` WHERE (m = 1) GROUP BY UNIX_TIMESTAMP(m_timestamp) DIV 6048000 ORDER BY `a_b`.`m_timestamp` ASC;
+---------------------+-----+
| m_timestamp | cnt |
+---------------------+-----+
| 2014-08-01 22:21:09 | 72 |
| 2014-10-05 00:15:23 | 69 |
| 2014-12-20 11:55:45 | 73 |
| 2015-02-04 23:45:29 | 76 |
| 2015-04-02 03:51:14 | 58 |
| 2015-06-19 22:25:06 | 15 |
+---------------------+-----+
mysql> select * from m_feedbacks LIMIT 5;
+----+-----------+-------+---------------------+---------+
| id | x_id | m | m_timestamp | user_id |
+----+-----------+-------+---------------------+---------+
| 1 | 1 | 1 | 2015-02-04 23:45:29 | 1 |
| 2 | 1 | 2 | 2015-04-24 23:00:37 | 1 |
| 3 | 1 | 2 | 2014-09-25 02:51:37 | 1 |
| 4 | 1 | 0 | 2014-09-29 03:28:01 | 1 |
| 5 | 1 | 0 | 2014-12-11 16:15:09 | 1 |
+----+-----------+-------+---------------------+---------+
5 rows in set (0.00 sec)
提前感谢您的第一个方法非常接近,因为选择X和Y都有效。该值不通过inspect方法显示。从数组中获取第一个值,并对其调用cnt以查看它是否工作 调用group时,键是group方法计算的值 我认为得到你想要的最好的方法是,你可以用勇气:
AB.where("m = 1").group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000 ").pluck("m_timestamp, count(*)").to_h
您的第一个方法非常接近,因为选择X和Y确实有效。该值不通过inspect方法显示。从数组中获取第一个值,并对其调用cnt以查看它是否工作 调用group时,键是group方法计算的值 我认为得到你想要的最好的方法是,你可以用勇气:
AB.where("m = 1").group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000 ").pluck("m_timestamp, count(*)").to_h
您的第一个方法非常接近,因为选择X和Y确实有效。该值不通过inspect方法显示。从数组中获取第一个值,并对其调用cnt以查看它是否工作 调用group时,键是group方法计算的值 我认为得到你想要的最好的方法是,你可以用勇气:
AB.where("m = 1").group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000 ").pluck("m_timestamp, count(*)").to_h
您的第一个方法非常接近,因为选择X和Y确实有效。该值不通过inspect方法显示。从数组中获取第一个值,并对其调用cnt以查看它是否工作 调用group时,键是group方法计算的值 我认为得到你想要的最好的方法是,你可以用勇气:
AB.where("m = 1").group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000 ").pluck("m_timestamp, count(*)").to_h
您可以通过以下代码实现这些目标
AB.where("m = 1").select(m_timestamp as timsatmp , count(*) as count).group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000").inject({}) { |hsh, r| hsh[r.timsatmp] = r.count; hsh }
实际上,当您获得一个activerecords计数时,默认情况下,它会将结果哈希中的group by值作为键,从而将您的输出作为:
{232=>72233=>69234=>73235=>76236=>58237=>15}
所以,在从查询中获得输出后,您需要创建自己的哈希,以便它提供您所需的任何哈希。您可以通过以下代码实现这些
AB.where("m = 1").select(m_timestamp as timsatmp , count(*) as count).group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000").inject({}) { |hsh, r| hsh[r.timsatmp] = r.count; hsh }
实际上,当您获得一个activerecords计数时,默认情况下,它会将结果哈希中的group by值作为键,从而将您的输出作为:
{232=>72233=>69234=>73235=>76236=>58237=>15}
所以,在从查询中获得输出后,您需要创建自己的哈希,以便它提供您所需的任何哈希。您可以通过以下代码实现这些
AB.where("m = 1").select(m_timestamp as timsatmp , count(*) as count).group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000").inject({}) { |hsh, r| hsh[r.timsatmp] = r.count; hsh }
实际上,当您获得一个activerecords计数时,默认情况下,它会将结果哈希中的group by值作为键,从而将您的输出作为:
{232=>72233=>69234=>73235=>76236=>58237=>15}
所以,在从查询中获得输出后,您需要创建自己的哈希,以便它提供您所需的任何哈希。您可以通过以下代码实现这些
AB.where("m = 1").select(m_timestamp as timsatmp , count(*) as count).group("UNIX_TIMESTAMP(m_timestamp) DIV 6048000").inject({}) { |hsh, r| hsh[r.timsatmp] = r.count; hsh }
实际上,当您获得一个activerecords计数时,默认情况下,它会将结果哈希中的group by值作为键,从而将您的输出作为:
{232=>72233=>69234=>73235=>76236=>58237=>15}
因此,在从查询中获得输出后,您需要创建自己的哈希,以便它提供您所需的任何哈希。一个样本数据集来重现该问题将很有帮助。如果您对分组数据执行条件,则需要使用have而不是where@马克斯·威廉姆斯在这里不适用。我希望所有结果都在另一个新字段中。我希望与mysql查询的输出相同,您可以使用rails尝试原始sql。这里是指导链接:一个用于重现问题的示例数据集将非常有用。如果您对分组数据执行条件,则需要使用have而不是where@马克斯·威廉姆斯在这里不适用。我希望所有结果都在另一个新字段中。我希望与mysql查询的输出相同,您可以使用rails尝试原始sql。这里是指导链接:一个用于重现问题的示例数据集将非常有用。如果您对分组数据执行条件,则需要使用have而不是where@马克斯·威廉姆斯在这里不适用。我希望所有结果都在另一个新字段中。我希望与mysql查询的输出相同,您可以使用rails尝试原始sql。这里是指导链接:一个用于重现问题的示例数据集将非常有用。如果您对分组数据执行条件,则需要使用have而不是where@马克斯·威廉姆斯在这里不适用。我希望所有结果都在另一个新字段中。我希望与mysql查询的输出相同。您可以使用rails尝试原始sql这里是指导链接:我浪费了将近一天的时间试图找出我的错误所在。。非常感谢。最终得到了查询,并在两个步骤中完成了相同的操作。一个是弹拨,一个是计数,两个都是拉链。。你节省了大量的处理时间。!!我浪费了将近一天的时间试图找出我错在哪里。。非常感谢。最终得到了查询,并在两个步骤中完成了相同的操作。一个有勇气,一个数字
把两者结合在一起。。你节省了大量的处理时间。!!我浪费了将近一天的时间试图找出我错在哪里。。非常感谢。最终得到了查询,并在两个步骤中完成了相同的操作。一个是弹拨,一个是计数,两个都是拉链。。你节省了大量的处理时间。!!我浪费了将近一天的时间试图找出我错在哪里。。非常感谢。最终得到了查询,并在两个步骤中完成了相同的操作。一个是弹拨,一个是计数,两个都是拉链。。你节省了大量的处理时间。!!