Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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
Mysql 试图计算那些刚签署虚拟贺卡的顾客最终购买贺卡的转化率_Mysql_Sql - Fatal编程技术网

Mysql 试图计算那些刚签署虚拟贺卡的顾客最终购买贺卡的转化率

Mysql 试图计算那些刚签署虚拟贺卡的顾客最终购买贺卡的转化率,mysql,sql,Mysql,Sql,我试图计算那些在虚拟贺卡上签名但最终没有购买的顾客与那些签名并购买的顾客的转换率。在我的网站上,如果客户在贺卡上签名但不购买(离开或他们将贺卡保存以备以后使用),则会在我们的DB中的“签名通知”栏中记录,并使用1和0进行支付。签署和购买贺卡的客户在各自的栏中记录为1和1。我使用参考电子邮件作为此表的唯一键,因为所有其他客户信息都可以在其他表中找到 我是SQL的完全新手,下面是我编写的查询(请友好): 我应该用SUM来代替吗?这两个查询分别工作,但我不确定如何编写一个正确划分它们的查询。您已经非常

我试图计算那些在虚拟贺卡上签名但最终没有购买的顾客与那些签名并购买的顾客的转换率。在我的网站上,如果客户在贺卡上签名但不购买(离开或他们将贺卡保存以备以后使用),则会在我们的DB中的“签名通知”栏中记录,并使用1和0进行支付。签署和购买贺卡的客户在各自的栏中记录为1和1。我使用参考电子邮件作为此表的唯一键,因为所有其他客户信息都可以在其他表中找到

我是SQL的完全新手,下面是我编写的查询(请友好):


我应该用SUM来代替吗?这两个查询分别工作,但我不确定如何编写一个正确划分它们的查询。

您已经非常接近了。尝试:

SELECT SUM(CASE WHEN sign_notification = 1 AND is_paid = 0 THEN 1 ELSE 0 END) / COUNT(1) AS PercentPaid
FROM canvases
WHERE sign_notification = 1
只是:

这将给出转换率,即签名和购买的客户数除以签名的客户数


这个表达式利用了一个漂亮的MySQL特性,其中真实条件的计算结果为
1
;这是需要一个
案例
结构。

您可以通过平均值来实现:

SELECT AVG(is_paid)
FROM canvases
WHERE sign_notification = 1 ;

这是因为
是付费的
是一个数字——0或1。平均数是已经支付的人的比例。(您可以使用
1-AVG(is_paid)
获取未付款的人。

事件A是在签卡。事件B是在买卡。您如何区分购买后再签名的人和签署后再购买的人。@草莓。“我试图计算那些在虚拟贺卡上签名但最终没有购买的顾客与那些签名并购买的顾客的转换率。"根据示例查询,这是存储在带有标志的单行中的。这至少是对问题的合理解释。这是一个很好的问题。网站上的结帐过程要求您在完成购买之前填写卡片并签名。因此,没有一个实例可以让您购买卡片签名。@如果序列是sign-buy-sign-sign-buy怎么办。转换率是多少,上面的解决方案是否提供了转换率?如果是,这就是你的答案。如果不是,改进你的问题!@Masao_Terada…样本数据和期望的结果总是很有帮助的。这实际上非常有效。非常感谢你!我让它变得比以前更困难这是必须的。
SELECT SUM(is_paid = 1) / COUNT(*)
FROM canvases 
WHERE sign_notification = 1 
SELECT AVG(is_paid)
FROM canvases
WHERE sign_notification = 1 ;