Sobes.tech
Junior — Senior
34

Подсчёт повторяемости уникальных комбинаций названия события и пользователя

Компании, где спрашивали:

Туту
Условие задачи

Необходимо определить, как часто встречаются отдельные уникальные сочетания полей "title" и "user_id" в массиве событий. По каждому такому сочетанию нужно посчитать количество его появлений.

{
  "events": [
    {
      "time": "2022-06-17 08:54:03",
      "title": "search",
      "user_id": null,
      "ref": "main",
      "session_id": "a2"
    },
    {
      "time": "2022-06-17 23:19:33",
      "title": "main",
      "user_id": null,
      "ref": null,
      "session_id": "b4"
    },
    {
      "time": "2022-06-20 13:02:44",
      "title": "success",
      "user_id": null,
      "ref": "seats",
      "session_id": "b1"
    },
    {
      "time": "2022-06-20 14:45:43",
      "title": "search_click",
      "user_id": 123,
      "page": "main",
      "session_id": "a1"
    },
    {
      "time": "2022-06-20 14:46:49",
      "title": "main",
      "user_id": 123,
      "ref": null,
      "session_id": "a1"
    },
    {
      "time": "2022-06-17 23:21:31",
      "title": "search",
      "user_id": null,
      "ref": "main",
      "session_id": "b5"
    },
    {
      "time": "2022-06-18 13:02:44",
      "title": "main",
      "user_id": null,
      "ref": "seats",
      "session_id": "c2"
    },
    {
      "time": "2022-06-18 14:47:03",
      "title": "seats",
      "user_id": 123,
      "ref": "search",
      "session_id": "d1"
    },
    {
      "time": "2022-06-18 13:12:41",
      "title": "search",
      "user_id": null,
      "ref": "seats",
      "session_id": "c4"
    },
    {
      "time": "2022-06-20 14:44:01",
      "title": "chat_open",
      "user_id": 123,
      "page": "seats",
      "session_id": "d1"
    },
    {
      "time": "2022-06-20 14:46:32",
      "title": "chat_send_message",
      "user_id": 123,
      "page": "seats",
      "session_id": "d1"
    },
    {
      "time": "2022-06-21 13:12:41",
      "title": "seats",
      "user_id": 34,
      "ref": null,
      "session_id": "c4"
    },
    {
      "time": "2022-06-21 21:14:00",
      "title": "success",
      "user_id": null,
      "ref": null,
      "session_id": "b4"
    }
  ]
}

В результате должна получиться структура, где ключом будет строка вида "title|user_id", а значением – количество её появлений в исходном массиве.