【发布时间】:2016-12-11 18:29:44
【问题描述】:
我已经搜索了解决方案,但似乎都需要将 WHERE 替换为 HAVING。我不相信这有同样的问题,我无法弄清楚可能出了什么问题。我已经尝试替换在 WHERE 子句中有引用和任何聚合函数的代码的不同部分,但我仍然遇到相同的错误。以下是我的整个 MySQL 语句,它获取卖家的统计数据及其在选定时期内的表现。
SELECT users.name AS sellername, users.id AS sellerid, `providers`.`id`, providers.name AS providername,
COUNT(sales.id) as brutto, COUNT(sale_netto.id) as netto, AVG(sale_quality.grade) as grade,
SUM(COUNT(sales.id)-COUNT(sale_netto.id)) as diff, (COUNT(sales.id)/COUNT(sales.id)+COUNT(sale_netto.id))*100 AS perc
FROM `product_regretrules`
LEFT JOIN `product_categories` ON `product_categories`.`id` = `product_regretrules`.`product_category_id`
LEFT JOIN `product_product_category` ON `product_product_category`.`product_category_id` = `product_categories`.`id`
LEFT JOIN `products` ON `products`.`id` = `product_regretrules`.`product_id`
OR `products`.`id` = `product_product_category.product_id`
LEFT JOIN `sales` ON `sales`.`product_id` = `products`.`id`
LEFT JOIN `sale_netto` ON `sale_netto`.`sale_id` = `sales`.`id`
LEFT JOIN `users` ON `users`.`id` = `sales`.`seller_id`
LEFT JOIN `providers` ON `providers`.`id` = `products`.`provider_id`
LEFT JOIN `sale_quality` ON `sale_quality`.`sale_id` = `sales`.`id`
WHERE `sale_netto`.`upload_id` = 725
AND `sale_netto`.`id` is not null
AND `sales`.`sell_date` between 2015-12-04 and 2016-08-06
AND `product_regretrules`.`deleted_at` is null
GROUP BY `users.id`, `providers`.`id`
请查看查询的问题,我对如何获得正确数字/统计数据的答案或 cmets 不感兴趣。
【问题讨论】:
-
似乎这部分是问题 'SUM(COUNT(sales.id)-COUNT(sale_netto.id)) as diff' 我会回答的原因,但我不确定它为什么会导致问题所以我希望有人能解释一下。