Mysql 获取表中重复项的百分比和计数时出现的问题?
我试图以这样的方式结束,但逻辑在逃避我Mysql 获取表中重复项的百分比和计数时出现的问题?,mysql,Mysql,我试图以这样的方式结束,但逻辑在逃避我 SELECT entity_id , customer_email FROM sales_flat_order; 显示您可以想象的多个电子邮件地址,其中一些复制了一些唯一的电子邮件地址 我想我可以做一些类似的事情来获得计数(尽管没有成功) 即使在这一切开始起作用之后,在试图获得一个百分比后,它也会相当复杂。如何才能最好地处理此问题,并最好地修复查询 当前查询中出现的错误为 ERROR 1064 (42000): You have an erro
SELECT entity_id
, customer_email
FROM sales_flat_order;
显示您可以想象的多个电子邮件地址,其中一些复制了一些唯一的电子邮件地址
我想我可以做一些类似的事情来获得计数(尽管没有成功)
即使在这一切开始起作用之后,在试图获得一个百分比后,它也会相当复杂。如何才能最好地处理此问题,并最好地修复查询
当前查询中出现的错误为
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT customer_email FROM sales_flat_order GROUP BY customer_email HAVIN' at line 2
编辑
我的sql查询已经完成了这么多,但最终还是出现了一个错误
SELECT (COUNT(DISTINCT customer_email)) AS 'All Orders'
, ( COUNT(DISTINCT customer_email) - (
SELECT COUNT(*) FROM(SELECT customer_email FROM hubsales_flat_order GROUP BY customer_email HAVING COUNT(*) = 1) AS 's')
) AS 'Single Orders'
, ( COUNT(DISTINCT customer_email) - (
SELECT COUNT(*) FROM(SELECT customer_email FROM hubsales_flat_order GROUP BY customer_email HAVING COUNT(*) > 1) AS 'r')
) AS 'Repeat Orders'
FROM hubsales_flat_order;
错误是
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''s')
) AS 'Single Orders'
很纠结,但在这里
SELECT 'All Orders' AS 'Type'
, (
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) AS 'Count'
, CONCAT(
ROUND(
(
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) / (
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) * 100, 1), '%') AS 'Percentage'
UNION ALL
SELECT 'Single Orders' AS 'Type'
, (
COUNT(
DISTINCT customer_email
) - (
SELECT COUNT(*) FROM(
SELECT customer_email FROM foodhubsales_flat_order GROUP BY customer_email HAVING COUNT(*) > 1
) s
)
) AS 'Count'
, CONCAT(
ROUND(
(
COUNT(
DISTINCT customer_email
) - (
SELECT COUNT(*) FROM(
SELECT customer_email FROM foodhubsales_flat_order GROUP BY customer_email HAVING COUNT(*) > 1
) s
)
) / (
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) * 100, 1), '%') AS 'Percentage'
FROM foodhubsales_flat_order
UNION ALL
SELECT 'Repeat Orders' AS 'Type'
, (
COUNT(
customer_email
) - (
SELECT COUNT(*) FROM(
SELECT customer_email FROM foodhubsales_flat_order GROUP BY customer_email HAVING COUNT(*) = 1
) s
)
) AS 'Count'
, CONCAT(
ROUND(
(
COUNT(
customer_email
) - (
SELECT COUNT(*) FROM(
SELECT customer_email FROM foodhubsales_flat_order GROUP BY customer_email HAVING COUNT(*) = 1
) s
)
) / (
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) * 100, 1), '%') AS 'Percentage'
FROM foodhubsales_flat_order;
SELECT 'All Orders' AS 'Type'
, (
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) AS 'Count'
, CONCAT(
ROUND(
(
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) / (
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) * 100, 1), '%') AS 'Percentage'
UNION ALL
SELECT 'Single Orders' AS 'Type'
, (
COUNT(
DISTINCT customer_email
) - (
SELECT COUNT(*) FROM(
SELECT customer_email FROM foodhubsales_flat_order GROUP BY customer_email HAVING COUNT(*) > 1
) s
)
) AS 'Count'
, CONCAT(
ROUND(
(
COUNT(
DISTINCT customer_email
) - (
SELECT COUNT(*) FROM(
SELECT customer_email FROM foodhubsales_flat_order GROUP BY customer_email HAVING COUNT(*) > 1
) s
)
) / (
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) * 100, 1), '%') AS 'Percentage'
FROM foodhubsales_flat_order
UNION ALL
SELECT 'Repeat Orders' AS 'Type'
, (
COUNT(
customer_email
) - (
SELECT COUNT(*) FROM(
SELECT customer_email FROM foodhubsales_flat_order GROUP BY customer_email HAVING COUNT(*) = 1
) s
)
) AS 'Count'
, CONCAT(
ROUND(
(
COUNT(
customer_email
) - (
SELECT COUNT(*) FROM(
SELECT customer_email FROM foodhubsales_flat_order GROUP BY customer_email HAVING COUNT(*) = 1
) s
)
) / (
SELECT COUNT(customer_email) FROM foodhubsales_flat_order
) * 100, 1), '%') AS 'Percentage'
FROM foodhubsales_flat_order;