ActiveRecord计算列总和并将其分组

哈莎MV

我有以下查询

engagement_metrics = EngagementMetric.where(engagement_id: engagement_ids).order('metrics_date desc').limit(7).group_by { |p| p.metrics_date }

结果是这样的

{
    "2016-05-13": [
        {
            "id": 4,
            "provider": "facebook",
            "likes": -2,
            "comments": 0,
            "shares": 0,
            "views": 0,
            "reach": 0,
            "reactions": {
                "sad_count": "0",
                "wow_count": "-1",
                "haha_count": "0",
                "like_count": "-1",
                "love_count": "0",
                "angry_count": "0"
            }
        },
        {
            "id": 5,
            "provider": "facebook",
            "likes": 2,
            "comments": 2,
            "shares": 2,
            "views": 2,
            "reach": 0,
            "reactions": {
                "sad_count": "0",
                "wow_count": "0",
                "haha_count": "0",
                "like_count": "0",
                "love_count": "0",
                "angry_count": "0"
            }
        }
    ],
    "2016-05-12": [
        {
            "id": 3,
            "provider": "facebook",
            "likes": 1,
            "comments": 3,
            "shares": 0,
            "views": 0,
            "reach": 0,
            "reactions": {
                "sad_count": "1",
                "wow_count": "0",
                "haha_count": "0",
                "like_count": "0",
                "love_count": "0",
                "angry_count": "0"
            },
            "engagement_id": 1,
            "participation_id": 1,
            "campaign_id": 1,
            "influencer_authorization_id": 1,
            "influencer_id": 1,
            "social_account_id": 1,
            "metrics_date": "2016-05-12",
            "status": "processed",
            "deleted_at": null,
            "created_at": "2016-05-14T11:36:55.995Z",
            "updated_at": "2016-05-14T11:36:55.995Z"
        }
    ],
    "2016-05-11": [
        {
            "id": 2,
            "provider": "facebook",
            "likes": 0,
            "comments": 16,
            "shares": 0,
            "views": 0,
            "reach": 0,
            "reactions": {
                "sad_count": "0",
                "wow_count": "0",
                "haha_count": "0",
                "like_count": "0",
                "love_count": "0",
                "angry_count": "0"
            }
        }
    ],
    "2016-05-10": [
        {
            "id": 1,
            "provider": "facebook",
            "likes": 3,
            "comments": 4,
            "shares": 0,
            "views": 0,
            "reach": 0,
            "reactions": {
                "sad_count": "0",
                "wow_count": "1",
                "haha_count": "0",
                "like_count": "1",
                "love_count": "1",
                "angry_count": "0"
            }
        }
    ]
}

这是迭代获取数据的最佳方法,如下所示

[
    {
        "date": "24/03/16",
        "metrics": {
            "likes_count": "29",
            "comments_count": "456",
            "shares_count": "234",
            "views_count": "65",
            "clicks_count": "123"
        }
    },
    {
        "date": "25/03/16",
        "metrics": {
            "likes_count": "345",
            "comments_count": "234",
            "shares_count": "876",
            "views_count": "345",
            "clicks_count": "45"
        }
    },
    {
        "date": "26/03/16",
        "metrics": {
            "likes_count": "345",
            "comments_count": "265",
            "shares_count": "243",
            "views_count": "165",
            "clicks_count": "87"
        }
    },
    {
        "date": "27/03/16",
        "metrics": {
            "likes_count": "376",
            "comments_count": "87",
            "shares_count": "54",
            "views_count": "754",
            "clicks_count": "34"
        }
    },
    {
        "date": "28/03/16",
        "metrics": {
            "likes_count": "103",
            "comments_count": "324",
            "shares_count": "405",
            "views_count": "87",
            "clicks_count": "354"
        }
    },
    {
        "date": "29/03/16",
        "metrics": {
            "likes_count": "23",
            "comments_count": "65",
            "shares_count": "234",
            "views_count": "87",
            "clicks_count": "34"
        }
    },
    {
        "date": "30/03/16",
        "metrics": {
            "likes_count": "98",
            "comments_count": "576",
            "shares_count": "34",
            "views_count": "365",
            "clicks_count": "212"
        }
    }
]
波拉玛

出于性能方面的考虑,您应始终尽力将数据库分组(使用group),而不是ruby代码(group_by)。我认为可以使用自定义选择和分组来检索您所要求的内容,即给定列的每日总和

EngagementMetric.
    select("metrics_date as date").
    select("sum(likes) as likes_count").
    select("sum(comments) as comments_count").
    select("sum(shares) as shares_count").
    select("sum(views) as views_count").
    select("sum(clicks) as clicks_count").
    where(engagement_id: engagement_ids).        
    group("date").
    order("date desc").
    to_json

 # => [{ date: "2016-05-01", likes_count: 123, comments_count: 456, ... }, {...}]

即,这将汇总每日分组中的所有数据并返回结果。如果您希望指标总和.appear出现在“ metrics”子键下(您可以使用自定义as_json方法来完成,则只需构造一些不同的JSON

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server:计算不同列中的项目并将其分组

来自分类Dev

合并两列并将其分组

来自分类Dev

如何计算多个外键并将其连续分组?

来自分类Dev

如何按两列分组并计算第三列的总和

来自分类Dev

jQuery&PHP:计算总和并将其发送回客户端

来自分类Dev

Pandas数据框-计算符合条件的行总和,并将其与列表元素进行比较

来自分类Dev

Django ORM注释总和计算错误,并将其乘以条目数,已连接

来自分类Dev

计算数据帧的总和并将其附加到顶部

来自分类Dev

如何计算表中一个字段的总和并将其放入输入中

来自分类Dev

如何计算特定列中的发生并将其汇总

来自分类Dev

计算多个值并将其插入到datagridview的列中

来自分类Dev

两列分组总和

来自分类Dev

熊猫数据框,如何将单个列分组并将总和应用于多列并添加新的总和列?

来自分类Dev

将熊猫中的列值分组并将其他列值制成列表

来自分类Dev

计算列总和

来自分类Dev

计算隐藏列的总和

来自分类Dev

计算列的总和并按具有相同值的列对其进行分组

来自分类Dev

在之间找到相同的数字并将其分组

来自分类Dev

垂直打印编号并将其分组

来自分类Dev

在之间找到相同的数字并将其分组

来自分类Dev

R为两列的所有排列引入新的行并将其分组

来自分类Dev

MSSQL按列分组,并将其与表中存在的出现次数结合起来

来自分类Dev

在linq中将多列求和并将其分组为一个值

来自分类Dev

计算分组熊猫数据框中的总和

来自分类Dev

将列表中的项目分组并计算总和

来自分类Dev

计算分组熊猫数据框中的总和

来自分类Dev

按类型分组计算层次查询的总和

来自分类Dev

计算按行分组的列的累加总和和总计百分比

来自分类Dev

我如何计算列中的值数并将其写入 R 的新列中?

Related 相关文章

  1. 1

    SQL Server:计算不同列中的项目并将其分组

  2. 2

    合并两列并将其分组

  3. 3

    如何计算多个外键并将其连续分组?

  4. 4

    如何按两列分组并计算第三列的总和

  5. 5

    jQuery&PHP:计算总和并将其发送回客户端

  6. 6

    Pandas数据框-计算符合条件的行总和,并将其与列表元素进行比较

  7. 7

    Django ORM注释总和计算错误,并将其乘以条目数,已连接

  8. 8

    计算数据帧的总和并将其附加到顶部

  9. 9

    如何计算表中一个字段的总和并将其放入输入中

  10. 10

    如何计算特定列中的发生并将其汇总

  11. 11

    计算多个值并将其插入到datagridview的列中

  12. 12

    两列分组总和

  13. 13

    熊猫数据框,如何将单个列分组并将总和应用于多列并添加新的总和列?

  14. 14

    将熊猫中的列值分组并将其他列值制成列表

  15. 15

    计算列总和

  16. 16

    计算隐藏列的总和

  17. 17

    计算列的总和并按具有相同值的列对其进行分组

  18. 18

    在之间找到相同的数字并将其分组

  19. 19

    垂直打印编号并将其分组

  20. 20

    在之间找到相同的数字并将其分组

  21. 21

    R为两列的所有排列引入新的行并将其分组

  22. 22

    MSSQL按列分组,并将其与表中存在的出现次数结合起来

  23. 23

    在linq中将多列求和并将其分组为一个值

  24. 24

    计算分组熊猫数据框中的总和

  25. 25

    将列表中的项目分组并计算总和

  26. 26

    计算分组熊猫数据框中的总和

  27. 27

    按类型分组计算层次查询的总和

  28. 28

    计算按行分组的列的累加总和和总计百分比

  29. 29

    我如何计算列中的值数并将其写入 R 的新列中?

热门标签

归档