Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL根据总行数将前2名的多行分组为单列_Sql_Postgresql_Group By_Aggregate_Greenplum - Fatal编程技术网

PostgreSQL根据总行数将前2名的多行分组为单列

PostgreSQL根据总行数将前2名的多行分组为单列,sql,postgresql,group-by,aggregate,greenplum,Sql,Postgresql,Group By,Aggregate,Greenplum,例如,我有这张桌子 ek_id phone_number product ctgry usage 12345 525556456 DSX Ads 4 78910 525556789 stillery Communications 2 12345 525556456 Dtscou eCommerce 3 78915 525556777

例如,我有这张桌子

ek_id   phone_number    product     ctgry          usage
12345   525556456       DSX         Ads              4
78910   525556789       stillery    Communications   2
12345   525556456       Dtscou      eCommerce        3
78915   525556777       Dyandra     Education        2
12345   525556456       DynAd       Ads              1
78910   525556789       eCreat      Communications   4
78915   525556777       tivemeasure eCommerce        5
78910   525556789       klanku      Ads              6
78910   525556789       Ema         Communications   7
我想这样做

ek_id   phone_number    product         ctgry                 usage
12345   525556456       DSX | stillery  Ads | Education         8|6
78910   525556789       DSX | eCreat    Ads | eCommerce        10|8 
78915   525556777       ema | klanku    Ads | Communications    9|5
因此,基本上根据最高的总使用量将前2名产品和ctgry分为管道分离柱


对于小组来说,将是

   SELECT ek_id, phone_number, 
      array_agg(product) as product, 
      array_agg(ctgry) as ctgry, 
      array_agg(usage) as usage
   FROM t
   GROPUP BY 1,2
。。。但需要了解的是,电话号码是否也适用于团体

根据总数将前2个多行分组到单个列中

Top是关于order by DESC,而多行是关于count*>1。。。所以

选择ek_id,-似乎是主键 马克斯电话号码,-?请更好地定义 字符串_aggarray _aggdroduct,“|”作为产品, 字符串_aggray_aggctgry,“|”作为ctgry, 字符串_aggarray _agguuse,|作为用法 从t 以1的速度增长 计数*>1的 按用途说明订购 限制2 根据最高总使用量,将前2名产品和ctgry分组到管道分离柱上


限制2只过滤前2名,sumusage检查最高的总使用量。对于带有管道的布局,可以包括字符串_aggx“|”,如字符串_aggarray_aggproduct“|”中所示

嗨,彼得,谢谢你的回复。我想我需要修改这个问题。我所说的前2名仅适用于产品和ctgry。例如,我有5种产品。因此,只有列上显示的前2个产品,而不是前5个,根据总使用量的最高总和,排名前2。我尝试了你的代码,它工作了,但限制了整体结果。