2016-11-15 98 views
-2

我有以下數據:在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

你做了什麼來fullfill您的需求? – e4c5

+0

你已經試過了什麼?你究竟在幹什麼? –

+0

您的數據不匹配。來源有'50 |桌面「作爲唯一的桌面行,但您的預期結果爲'65 |桌面'在它裏面。此外,你不明確你想要遵循的任何規則;應該把源頭縮短到第一個「。」之前的所有東西?或者某些數據是否有「www.facebook.com」?那麼,我假設你想通過'data,shortened_source,device'進行分組? – MatBailie

回答

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 

SQL Fiddle

好了,以迎合如果表中包含一個無效的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 
+1

也假定字符串中總是*總是*至少有一個'.'。 – MatBailie

+0

絕對 - 但是,由於問題不明確,我認爲最好繼續...... – BenjiBoyWick