首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vertica聚合函数调用可能不嵌套。

Vertica聚合函数调用可能不嵌套。
EN

Stack Overflow用户
提问于 2017-01-24 09:15:54
回答 1查看 776关注 0票数 0

下面是我的查询,当我运行它时,我会得到错误

聚合函数调用可能不嵌套。

知道为什么吗?

代码语言:javascript
运行
复制
select 
  country
, client
, COUNT(DISTINCT msisdn) as 'Total_number_of_MSISDN'
, count(*) as 'Total_number_of_MSISDN'
, count(case when COUNT(DISTINCT msisdn) then 1 end ) 
from my_table
where CAST(time_updated as DATE) = CURRENT_DATE-1
and action_status='COMPLETED' and "ACTION" ='CHARGE'
GROUP BY 
  country
, client
ORDER BY 
  country
, client

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-24 15:39:24

下面是我能得到的最接近你期望的结果;但是,在我的例子中,“SG”和“A”的结果返回1,而不是2。

现在,我猜你想数到2,因为你的输入列表中有两个不同的组--它的排序方式(不是)。如果您想要考虑到这些信息,那么您需要添加一个序列列,然后使用OLAP函数,比如滞后()或铅(),我认为。

显然,您的WHERE条件与您提供的示例表完全是一派胡言。

这是我能从您的输入数据中得到的最接近的:

代码语言:javascript
运行
复制
WITH 
-- input
my_table(country,client,msisdn) AS (
          SELECT 'MY','A',111
UNION ALL SELECT 'INDIA','A',112
UNION ALL SELECT 'SG','A',113
UNION ALL SELECT 'SG','A',113
UNION ALL SELECT 'SG','A',113
UNION ALL SELECT 'INDIA','A',126
UNION ALL SELECT 'SG','A',113
UNION ALL SELECT 'INDIA','A',116
UNION ALL SELECT 'INDIA','A',120
UNION ALL SELECT 'CH','D',115
UNION ALL SELECT 'CH','D',115
UNION ALL SELECT 'MY','B',117
UNION ALL SELECT 'INDIA','B',118
UNION ALL SELECT 'SG','C',119
UNION ALL SELECT 'CH','D',199
UNION ALL SELECT 'CH','D',199
)
,
-- rows occurring more than once
dups AS (
SELECT
  country
, client
, msisdn
FROM my_table
GROUP BY
  country
, client
, msisdn
HAVING COUNT(*) > 1
)
SELECT 
  m.country
, m.client
, COUNT(DISTINCT m.msisdn) AS 'Number_of_distinct_MSISDN'
, COUNT(*) AS 'Total_number_of_MSISDN'
, COUNT(DISTINCT d.msisdn) AS total_distinct_MSISDN
FROM my_table m
LEFT JOIN dups d USING(country,client,msisdn)
-- where CAST(time_updated as DATE) = CURRENT_DATE-1
-- and action_status='COMPLETED' and "ACTION" ='CHARGE'
GROUP BY 
  m.country
, m.client
ORDER BY
  m.country
, m.client
;

country|client|Number_of_distinct_MSISDN|Total_number_of_MSISDN|total_distinct_MSN
CH     |D     |                        2|                     4|                    2
INDIA  |A     |                        4|                     4|                    0
INDIA  |B     |                        1|                     1|                    0
MY     |A     |                        1|                     1|                    0
MY     |B     |                        1|                     1|                    0
SG     |A     |                        1|                     4|                    1
SG     |C     |                        1|                     1|                    0

祝你好运-马可

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41824250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档