SQL:重构队列分析
我正试图重构这个群组分析。因为我对SQL非常了解,所以我只知道基本知识,而且我今天必须完成它,我真的需要一些帮助。我们的团队中没有SQL开发人员,所有的后端开发人员都在休假。从周一开始我就一直在努力解决这个问题 我的任务是: 从users\u users表生成初始日期 为以下对象创建SQL: 每周登录 每周运营 这就是我所做的:SQL:重构队列分析,sql,postgresql,Sql,Postgresql,我正试图重构这个群组分析。因为我对SQL非常了解,所以我只知道基本知识,而且我今天必须完成它,我真的需要一些帮助。我们的团队中没有SQL开发人员,所有的后端开发人员都在休假。从周一开始我就一直在努力解决这个问题 我的任务是: 从users\u users表生成初始日期 为以下对象创建SQL: 每周登录 每周运营 这就是我所做的: SELECT time_table.*, ( WITH new_customers AS ( SELECT users_user.id FROM use
SELECT time_table.*, (
WITH new_customers AS (
SELECT users_user.id
FROM users_user
INNER JOIN (
SELECT user_id
FROM users_userloginlog UL
WHERE UL.created_at BETWEEN time_table.first_order_start AND time_table.first_order_stop
) AS period_orders ON period_orders.user_id = users_user.id
GROUP BY users_user.id
HAVING MIN(orders.paid_at) BETWEEN time_table.first_order_start AND time_table.first_order_stop
)
SELECT 100 * COUNT(*)::float/(SELECT COUNT(*) FROM new_customers) as repeat_percent
FROM (
SELECT COUNT(*), orders.user_id
FROM orders
INNER JOIN new_customers
ON new_customers.id = orders.UL
WHERE orders.paid_at <= time_table.stop
GROUP BY orders.user_id
HAVING COUNT(*) > 1
) AS REPEATS
)
FROM (
WITH time_serie AS (
SELECT generate_series AS start,
(generate_series + interval '1 month' - interval '1 second') AS stop
FROM generate_series('2018-01-01 00:00'::timestamp, '2018-06-30', '1 month')
), first_order_serie AS (
SELECT start AS first_order_start, stop AS first_order_stop
FROM time_serie
)
SELECT * FROM time_serie, first_order_serie) AS time_table
它应该是这样的:
这是我们的桌子:
我已经尝试了下面所有的链接,但没有一个有效。我正在使用PostgreSQL
如果您使用的是PostgreSQL,那么为什么要标记sql server?