2015-10-06 61 views
1
CREATE TABLE "spiral_articleinfo" (
    "id" integer NOT NULL PRIMARY KEY, 
    "url" varchar(255) NOT NULL UNIQUE, 
    "articletitle" varchar(1000) NOT NULL, 
    "articleimage" text, 
    "articlecontent" text NOT NULL, 
    "articlehtml" text NOT NULL, 
    "articledate" date, 
    "articlecategory" varchar(1000) NOT NULL, 
    "s_articlecategory" varchar(1000), 
    "articlesubcategory" varchar(1000) NOT NULL, 
    "articledomain" varchar(255), 
    "domainrank" integer NOT NULL, 
    "articletags" text NOT NULL, 
    "articleprice" decimal NOT NULL, 
    "contenthash" varchar(255) UNIQUE 
); 

这是表格模式。我希望通过articledomain获得每篇文章呈现组的不同关键词。 我所做的:使用group by by postgresql获取多于2列的不同数据

select distinct articledomain, articlecategory 
from spiral_articleinfo  
group by articledomain 
order by articledomain; 

错误到来是:

ERROR: column "spiral_articleinfo.articlecategory" must appear in the GROUP BY clause or be used in an aggregate function.

如何获得articlecategories?

当我运行此查询:

select distinct articledomain, articlecategory, articlesubcategory 
from spiral_articleinfo; 

我得到:

articledomain  | articlecategory | articlesucategory 
androidadvices.com| Android Apps | Books & Reference 
androidadvices.com| Android Apps | Business 

我想要的结果是继其articlecategory和articlesubcategory领域一个领域。 样本输出:

articledomain  | articlecategory | articlesucategory 
androidadvices.com | Android Apps | Books & Reference, Business 
www.womensweb.in |    Home|Social Lens, Crime, Law, Safety 
suitcaseofstories.in|   Himachal|Ladakh, People, Street Photography 
+1

请根据样本数据添加一些样本数据和预期输出。但看起来你只需要将'group by'部分全部删除。 –

+1

数据非常庞大,我运行这个:从spiral_articleinfo中选择不同的articledomain,articlecategory,articlesubcategory;但是这给了我:androidadvices.com | Android应用程序|商业 androidadvices.com | Android应用程序|通讯 androidadvices.com | Android应用程序|教育 androidadvices.com | Android应用程序|娱乐..但我希望所有的articledomains被殴打在一起,然后这些类别连在一起。 –

+0

@NamitaMaharanwar根据你发布的输出结果是什么样的结果?,_I想要结果成为一个域,跟随它的articlecategory和articlesubcategory字段_>显示它应该如何看起来像.. –

回答

1

可以使用string_agg()功能以及GROUP BY以达到所需的输出:

与以下为例:

create table foow (articledomain text,articlecategory text,articlesucategory text); 

insert into foow values ('androidadvices.com','Android Apps','Books & Reference'); 
insert into foow values ('androidadvices.com','Android Apps','Business'); 

和select语句应该是

select articledomain 
     ,articlecategory 
     ,string_agg(articlesucategory,',') 
from foow 
group by articledomain, articlecategory 

SQLFIDDLE DEMO