首页 > 解决方案 > 按两个字段分组并为每个组求和另一个

问题描述

我有兴趣按总和做一个 jq 分组列。

我尝试过使用数组,但我做不到。我需要添加按级别和流派分组的学生。

我的json是这样的:

[
  {
    "name": "Maths",
    "Level": "One",
    "Genre": "Boys",
    "pupils": 5
  },
  {
    "name": "English",
    "Level": "Two",
    "Genre": "Boys",
    "pupils": 3
  },
  {
    "name": "Maths",
    "Level": "One",
    "Genre": "Girls",
    "pupils": 7
  },
  {
    "name": "English",
    "Level": "One",
    "Genre": "Girls",
    "pupils": 6
  },
  {
    "name": "Social",
    "Level": "One",
    "Genre": "Boys",
    "pupils": 4
  },
  {
    "name": "Social",
    "Level": "Two",
    "Genre": "Girls",
    "pupils": 0
  }
]

我需要转换为 csv,如:

One, Boys, 9
One, Girls, 13
Two, Boys, 3
Two, Girls, 0

非常感谢!

标签: jsoncsvjq

解决方案


这与您之前的问题非常相似。您只需要按Genreafter分组Level

  group_by(.Level)[]
| group_by(.Genre)[]
| [.[0].Level, .[0].Genre, (map(.pupils) | add)]
| @csv

推荐阅读