Выберите sql запрос для группировки по json - PullRequest
0 голосов
/ 10 сентября 2018

Данные, которые я получаю из запроса на выборку, выглядят примерно так

[{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE456',
  products: '[{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6B7"}]',
  falconpay_api_response: null,
  dhl_updated_by: null
}, ... ]

То, что я делаю, - это выбор orders, а затем синтаксический анализ атрибута products и извлечение product_id и подсчет количества раз, которое product_id встречается в количестве различных объектов json. Это может занять очень много времени, если число строк для выборки исчисляется тысячами, а затем извлекается идентификатор и подсчитывается его число. Есть ли эффективный способ использовать GROUP by и получать непосредственно вхождения product_id для тысяч строк.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Попробуйте следующий запрос (это работает только в типе данных JSON): -

SELECT products->>'$.product_id' products, 
      count(products)
FROM events
GROUP BY products->>'$.product_id';

А следующая ссылка будет вам полезна: -

[http://www.mysqltutorial.org/mysql-json/]

0 голосов
/ 10 сентября 2018

Вы можете использовать его!

var data = [{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE451',
  products: [{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6B7"}],
  falconpay_api_response: null,
  dhl_updated_by: null
},{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE452',
  products: [{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6B7"},{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6K7"}],
  falconpay_api_response: null,
  dhl_updated_by: null
},{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE453',
  products: [{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6K7"}],
  falconpay_api_response: null,
  dhl_updated_by: null
},{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE454',
  products: [{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6B7"}],
  falconpay_api_response: null,
  dhl_updated_by: null
}];
var a =[];
data.forEach(function(order){
    order.products.forEach(function(product){
    if(a[product.product_id] == undefined){
        a[product.product_id] = [];
    }
    a[product.product_id].push(order);
  })
});
console.log(a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...