在mysql中组合相似数据

e3bfsja2  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(321)

我有以下数据:

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数据库

x4shl7ld

x4shl7ld1#

假设您可以使用第一个出现的点作为缩短的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

sql小提琴
好的,如果表包含一个无效的url(在本例中是一个没有点的url):

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

相关问题