Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Sql 使用postgres和chart.io构建客户终身价值折线图_Sql_Postgresql_Charts - Fatal编程技术网

Sql 使用postgres和chart.io构建客户终身价值折线图

Sql 使用postgres和chart.io构建客户终身价值折线图,sql,postgresql,charts,Sql,Postgresql,Charts,我需要建立一个客户生命周期价值表,并在如何在普通psql中实现这一点上陷入了困境 因此,我们的想法是每天都有一条线,它显示了客户在这一天签名的平均花费 我的桌子是这样的: created_at | Layer | avg_amount 2013-11-01 | 2013-11-01 | 35.50 2013-11-04 | 2013-11-01 | 10.00 2013-11-02 | 2013-11-02 | 49.00 2013-11-03 | 2013-11-03 | 57.5

我需要建立一个客户生命周期价值表,并在如何在普通psql中实现这一点上陷入了困境

因此,我们的想法是每天都有一条线,它显示了客户在这一天签名的平均花费

我的桌子是这样的:

created_at | Layer      | avg_amount
2013-11-01 | 2013-11-01 | 35.50
2013-11-04 | 2013-11-01 | 10.00
2013-11-02 | 2013-11-02 | 49.00
2013-11-03 | 2013-11-03 | 57.50
2013-11-06 | 2013-11-03 | 14.00
2013-11-12 | 2013-11-03 | 33.00
使用者

指控

id | created_at | total_amount | user_id
1  | 2013-11-01 | 49.00        | 1
2  | 2013-11-01 | 22.00        | 1
3  | 2013-11-04 | 10.00        | 1
4  | 2013-11-02 | 49.00        | 2
5  | 2013-11-03 | 66.00        | 3
6  | 2013-11-03 | 49.00        | 4
7  | 2013-11-06 | 14.00        | 4
8  | 2013-11-12 | 33.00        | 4
我们需要使用chart.io将其呈现为折线图。因此,结果表必须如下所示:

created_at | Layer      | avg_amount
2013-11-01 | 2013-11-01 | 35.50
2013-11-04 | 2013-11-01 | 10.00
2013-11-02 | 2013-11-02 | 49.00
2013-11-03 | 2013-11-03 | 57.50
2013-11-06 | 2013-11-03 | 14.00
2013-11-12 | 2013-11-03 | 33.00
“创建时间”是指在何处进行收费的时间

“层”指创建用户的时间

“avg_amount”是注册“created_at”的用户当天的平均费用总额

谢谢:)

编辑:不幸的是,随着市场营销人员看到图表,规格发生了变化……他们现在希望Y轴永远不要倾斜。它需要是[从群组用户创建的累计总收入]/[群组中的所有用户]。因此,提名人可以增加,但分母永远不能减少

因此,生成的表应该如下所示:

created_at | Layer      | cumulative_amount
2013-11-01 | 2013-11-01 | 71.00
2013-11-02 | 2013-11-02 | 49.00
2013-11-03 | 2013-11-03 | 66.00
2013-11-03 | 2013-11-03 | 49.00
2013-11-04 | 2013-11-01 | 81.00
2013-11-06 | 2013-11-03 | 63.00
2013-11-12 | 2013-11-03 | 96.00

非常感谢

我相信您可以解决一些格式问题(),但这里是您需要的基本查询

WITH daily_charges AS (
  SELECT
    sum(total_amount) AS daily_total,
    user_id,
    date_trunc('day', created_at) AS charge_date
  FROM charges
  GROUP BY user_id, created_at
  )
SELECT
  d.charge_date,
  date_trunc('day', u.created_at) AS layer,
  avg(d.daily_total) AS avg_amount
FROM
  daily_charges d
  JOIN users u ON
    (d.user_id=u.id)
GROUP BY charge_date, layer;

我相信您可以解决一些格式化问题(),但这里是您需要的基本查询

WITH daily_charges AS (
  SELECT
    sum(total_amount) AS daily_total,
    user_id,
    date_trunc('day', created_at) AS charge_date
  FROM charges
  GROUP BY user_id, created_at
  )
SELECT
  d.charge_date,
  date_trunc('day', u.created_at) AS layer,
  avg(d.daily_total) AS avg_amount
FROM
  daily_charges d
  JOIN users u ON
    (d.user_id=u.id)
GROUP BY charge_date, layer;

这是一个测试数据准备就绪的示例。这是一个测试数据准备就绪的示例。谢谢Jonathan…这让我非常接近,只有一个问题:用户可能每天要支付多个费用。我现在如何理解您的查询,它将收取每个用户/天的所有费用,并平均收取这些费用…这会把结果搞砸:(知道如何解决这个问题吗?当然,编辑了上面的查询,并向我的SQLFiddle添加了一些测试数据,以证明它是有效的。谢谢Jonathan…这让我非常接近,只有一个问题:用户可能每天要支付多个费用。我现在如何理解您的查询,它将收取每个用户/天的所有费用,并平均收取这些费用…这会弄乱结果:(知道如何解决这个问题吗?当然,编辑了上面的查询,并向我的SQLFiddle添加了一些测试数据,以表明它是有效的。