我有一个包含1.61亿行的大表。表结构是entryid(varchar), dater(date), region(char), detail(varchar), views(int),前四列一起作为主键。我想做以下处理:
detail包含www.google.com、www.google.ca、www.google.uk、www.facebook.com、facebook.com等URL。我想对来自同一域的行进行分组,例如,使用LIKE "%.google.%" for google和LIKE "%.facebook.%" OR LIKE "facebook.%" for facebook就足够了。但是如果更新行,可能会有重复的键,如何使用ON DUPLICATE KEY UPDATE来和views?是否有比LIKEregion列,对行进行分组,并将views和views和插入到一个新表中。如何在一个命令中这样做?views)。发布于 2012-01-30 19:11:21
对于MYSQL,尝试这样做,假设每一行的细节字段都类似于www.something.com。
SELECT
MONTH(dater),
SUBSTRING_INDEX(SUBSTRING_INDEX(detail, '.', 2), -1) as url,
sum(views)
from table
group by
MONTH(dater),
SUBSTRING_INDEX(SUBSTRING_INDEX(detail, '.', 2), -1)或者您可以使用一个子查询来使它看起来更干净:
SELECT mth, url, sum(views) from
(
SELECT
MONTH(dater) as mth,
SUBSTRING_INDEX(SUBSTRING_INDEX(detail, '.', 2), -1) as url,
views
from table) subq
group by
mth, urlhttps://stackoverflow.com/questions/9069226
复制相似问题