PostgreSQL:没有与给定名称和参数类型匹配的函数。每周用户登录队列分析
函数sum(布尔值)不存在第13行:ISNULL(sum(s.Offset= 0),0)w1,^提示:没有函数与给定的名称和参数匹配 类型。您可能需要添加显式类型转换 我试图创建一个每周队列分析,显示每周登录统计数据。 正如你所看到的,这就是我想要实现的目标: 这是我发现的,也是我试图重新创造的: 以下是我试图获取数据的表格: 这就是我到目前为止重构的内容:PostgreSQL:没有与给定名称和参数类型匹配的函数。每周用户登录队列分析,sql,postgresql,Sql,Postgresql,函数sum(布尔值)不存在第13行:ISNULL(sum(s.Offset= 0),0)w1,^提示:没有函数与给定的名称和参数匹配 类型。您可能需要添加显式类型转换 我试图创建一个每周队列分析,显示每周登录统计数据。 正如你所看到的,这就是我想要实现的目标: 这是我发现的,也是我试图重新创造的: 以下是我试图获取数据的表格: 这就是我到目前为止重构的内容: SELECT STR_TO_DATE(CONCAT(tb.cohort, ' Monday'), '%X-%V %W') as
SELECT
STR_TO_DATE(CONCAT(tb.cohort, ' Monday'), '%X-%V %W') as date,
size,
w1,
w2,
w3,
w4,
w5,
w6,
w7
FROM (
SELECT u.cohort,
ISNULL(SUM(s.Offset = 0), 0) w1,
ISNULL(SUM(s.Offset = 1), 0) w2,
ISNULL(SUM(s.Offset = 2), 0) w3,
ISNULL(SUM(s.Offset = 3), 0) w4,
ISNULL(SUM(s.Offset = 4), 0) w5,
ISNULL(SUM(s.Offset = 5), 0) w6,
ISNULL(SUM(s.Offset = 6), 0) w7
FROM (
SELECT
id,
last_login AS cohort
FROM users_user
) as u
LEFT JOIN (
SELECT DISTINCT
login_log.user_id,
DATE_PART('day',(users_user.last_login - users_user.date_joined)/7) AS Offset
FROM users_userloginlog login_log
LEFT JOIN users_user ON (users_user.id = login_log.user_id)
) as s ON s.user_id = u.id
GROUP BY u.cohort
) as tb
LEFT JOIN (
SELECT DATE_FORMAT(AddedDate, "%Y-%u") dt, COUNT(*) size FROM users GROUP BY dt
) size ON tb.cohort = size.dt
正如错误消息告诉您的:您不能对布尔值求和。和
s.Offset=0
返回true
或false
(或null
)。真、假、真、真、假的“和”是多少
您可以使用过滤聚合实现您想要的:
SELECT u.cohort,
count(*) filter (where s.Offset = 0 as w1,
count(*) filter (where s.Offset = 1) as w2,
count(*) filter (where s.Offset = 2) as w3,
count(*) filter (where s.Offset = 3) as w4,
count(*) filter (where s.Offset = 4) as w5,
count(*) filter (where s.Offset = 5) as w6,
count(*) filter (where s.Offset = 6) as w7,
....
str\u to\u date()
和date\u format()
不是Postgres函数。你确定你在使用Postgres吗?嘿,我们可以继续聊天吗?