У меня есть чат от телекоммуникационной компании, подписывающий новых клиентов. В чате у клиента и представителя компании есть чат.
Я пытаюсь свернуть чат, чтобы было меньше строк. Диаграммы ниже показывают, как выглядят данные до и как должны выглядеть данные после.
ДО
ПОСЛЕ
Я просмотрел следующие статьи:
Я пробовал этот код:
select
unique_id, string_agg(concat(text, ' ', text), ', ')
from
conversation
group by
unique_id, user
Однако, это не свернет его по мере необходимости. Он сворачивается полностью до 2х строк: одна для клиента, другая для компании. Лог c Я ищу, если следующая строка в этом запросе содержит тот же уникальный_идентификатор пользователя. Затем объединить текстовое поле текущей строки с текстовым полем следующей строки.
Вот SQL Скрипка страницы, но я запускаю этот код на SQL сервере, который имеет string_agg
: http://sqlfiddle.com/#! 9 / 5ad86c / 3
Я запросил почти аналогичный алгоритм в R, если вы посмотрите мою историю StackOverflow.
CREATE TABLE conversation
(
`unique_id` double,
`line_no` int,
`user` varchar(7000),
`text` varchar(7000)
);
INSERT INTO conversation (`unique_id`, `line_no`, `user`, `text`)
VALUES
(50314585222, 1, 'customer', 'Hi I would like to sign up for a service'),
(50314585222, 2, 'company', 'Hi My name is Alex. We can offer the following plans. We also have signup bonuses, with doubling of data for 12 months '),
(50314585222, 3, 'company', 'Plan1: 40GB data, with monthly price of $80'),
(50314585222, 4, 'company', 'Plan2: 20GB data, with monthly price of $40'),
(50314585222, 5, 'company', 'Plan3: 5GB data, with monthly price of $15'),
(50314585222, 6, 'customer', 'I was hoping for a much smaller plan, with only voice service'),
(50314585222, 7, 'customer', 'maybe the $10 per month plan.'),
(50319875222, 4, 'customer', 'so how do I sign up'),
(50319875222, 5, 'customer', '*for the service'),
(50319875222, 7, 'company', 'maybe I can call you for your details?')
;