2015-04-24 66 views
3

我运行下面的查询和不断收到错误消息:第N次(N,分割())BigQuery中

SELECT NTH(2,split(Web_Address_,'.')) +'.'+NTH(3,split(Web_Address_,'.')) as D , Web_Address_ 
FROM [Domains.domain 
limit 10 

Error message:
Error: (L1:110): (L1:119): SELECT clause has mix of aggregations 'D' and
fields 'Web_Address_' without GROUP BY clause
Job ID: symmetric-aura-572:job_axsxEyfYpXbe2gpmlYzH6bKGdtI

我试图用group by clause on field D和/或Web_address_,但仍然得到错误约group by

有谁知道这是为什么?之前我曾经用类似的查询获得过成功。

+0

对不起,有一个错字。忘了''''。查询是SELECT NTH(2,split(Web_Address_,'。'))+'。'+ NTH(3,split(Web_Address_,'。'))as D,Web_Address_ FROM [Domains.domain] limit 10 –

回答

2

你可能想使用这里WITHIN RECORD聚集,而不是GROUP BY

select concat(p1, '.', p2), Web_Address_ FROM 
(SELECT 
    NTH(2,split(Web_Ad`enter code here`dress_,'.')) WITHIN RECORD p1, 
    NTH(3,split(Web_Address_,'.')) WITHIN RECORD p2, Web_Address_ 
FROM (SELECT 'a.b.c' as Web_Address_)) 

附:如果您只是试图切断网址的第一部分,那么使用RIGHT和INSTR功能会更容易。

+0

This works !非常感谢你!我想在字符串被'。'分割后接受字符串的第二部分和第三部分。我没有经常在记录中使用。会看看。 –

+0

工作就像一个魅力!谢谢! – Diego

0

你也可以考虑使用URL functions:主机,域名和顶级域名