Vertica 聚合函数调用不能嵌套

Vertica aggregate function calls may not be nested

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

aggregate function calls may not be nested

知道为什么吗?

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

以下是我能得到的最接近您期望的结果; 'SG' 和 'A' 的结果,但是,在我的例子中,returns 是 1 而不是 2。

现在,我只是猜测您希望将其计为 2,因为您的输入列表中有两个不同的组 - 排序方式(未)。如果是您要考虑的信息,您需要添加一个序列列,然后使用像 LAG() 或 LEAD() 这样的 OLAP 函数,我认为。

很明显,您提供的示例 table 中的 WHERE 条件完全是无稽之谈。

这是我仅使用您的输入数据所能达到的最接近结果:

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

祝你好运 - 马可