Объединяя похожие данные в MySQL
У меня есть следующие данные:
date | source | session | device
5/1/2016 | facebook.com/social | 5 | mobile
5/1/2016 | facebook.com/post | 50 | desktop
5/1/2016 | facebook.com/commun | 25 | mobile
5/1/2016 | pintrest.com/social | 15 | mobile
5/1/2016 | pintrest.com/commun | 25 | mobile
Мне нужны данные как:
date | source | session | device
5/1/2016 | facebook | 30 | mobile
5/1/2016 | facebook | 50 | desktop
5/1/2016 | pintrest | 40 | mobile
Я использую базу данных MySQL
1 ответ
Решение
Предполагая, что вы можете использовать первое вхождение точки в качестве сокращенного URL-адреса ('.'), Тогда вам пригодится следующее.
select
date
, LEFT(source, LOCATE('.', source) - 1) as 'short_source'
, sum(sessions) as 'sessions'
, device
from date
group by
date
, LEFT(source, LOCATE('.', source) - 1)
, device
Хорошо, так что если нужно, чтобы таблица содержала недопустимый URL-адрес (в этом случае URL без DOT):
select
date
, COALESCE(LEFT(source, LOCATE('.', source) - 1), 'invalid_url') as 'short_source'
, sum(sessions) as 'sessions'
, device
from date
group by
date
, LEFT(source, LOCATE('.', source) - 1)
, device