How to SUM and GROUP BY of JSON data?

How to SUM and GROUP BY of JSON data?

Source: StackOverflow.com

Question

Some server-side code actually generates a JSON formatted string, which converts to JSON object:

    var dataString='[ 
      { "category" : "Search Engines", "hits" : 5, "bytes" : 50189 },
      { "category" : "Content Server", "hits" : 1, "bytes" : 17308 },
      { "category" : "Content Server", "hits" : 1, "bytes" : 47412 },
      { "category" : "Search Engines", "hits" : 1, "bytes" : 7601 },
      { "category" : "Business", "hits" : 1, "bytes" : 2847 },
      { "category" : "Content Server", "hits" : 1, "bytes" : 24210 },
      { "category" : "Internet Services", "hits" : 1, "bytes" : 3690 },
      { "category" : "Search Engines", "hits" : 6, "bytes" : 613036 },
      { "category" : "Search Engines", "hits" : 1, "bytes" : 2858 } 
    ];

I need to the equivalent of an SQL statement like this:

    SELECT category, sum(hits), sum(bytes) 
    FROM dataObject
    GROUP BY category
    ORDER BY sum(bytes) DESC

The desired output would be an object like this:

    var aggregatedObject='[ 
        { "category" : "Search Engines", "hits" : 13, "bytes" : 673684 },
        { "category" : "Content Server", "hits" : 3, "bytes" : 88930 },
        { "category" : "Internet Services", "hits" : 1, "bytes" : 3690 },
        { "category" : "Business", "hits" : 1, "bytes" : 2847 } 
    ]';

Answer

This is an example with SQL query from your question:

    var data = [ { "category" : "Search Engines", "hits" : 5, "bytes" : 50189 },...;

    var res = alasql('SELECT category, sum(hits) AS hits, sum(bytes) as bytes \
       FROM ? \
       GROUP BY category \
       ORDER BY bytes DESC',[data]);

Try this example at jsFiddle.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值