有没有办法将这两个SQL查询压缩为一个查询?

有没有办法将这两个SQL查询压缩为一个查询?,sql,Sql,我试图得到每个用户的平均产品数量。为此,我有两个问题: 获取产品数量的一个: SELECT COUNT(*) FROM `products` SELECT COUNT(DISTINCT `users`.`id`) FROM `users` INNER JOIN `products` ON `users`.`id` = `products`.`creator_id` 另一个是获取产品用户数量的: SELECT COUNT(*) FROM `products` SELECT COUNT(DIS

我试图得到每个用户的平均产品数量。为此,我有两个问题:

获取产品数量的一个:

SELECT COUNT(*) FROM `products`
SELECT COUNT(DISTINCT `users`.`id`) FROM `users` INNER JOIN `products` ON `users`.`id` = `products`.`creator_id`
另一个是获取产品用户数量的:

SELECT COUNT(*) FROM `products`
SELECT COUNT(DISTINCT `users`.`id`) FROM `users` INNER JOIN `products` ON `users`.`id` = `products`.`creator_id`

然后我把产品的数量除以用户的数量,得到一个平均值。我更愿意在一个查询中执行此操作,包括除法。

您只需将计数添加进去,可能有更好的方法,但这是可行的

SELECT 
(SELECT COUNT(*) FROM `products`) as OVERALL_COUNT,
COUNT(DISTINCT `users`.`id`) FROM `users` 
INNER JOIN `products` 
ON `users`.`id` = `products`.`creator_id`

你在找这个吗

SELECT AVG( `products`.`id`)
FROM `users`
  INNER JOIN `products`
    ON `users`.`id` = `products`.`creator_id`
GROUP BY `users`.`id`

您可以定期进行
计数
以获取信息

SELECT COUNT(*) product_count, 
       COUNT(DISTINCT products.creator_id) user_with_product_count
FROM products
产品计数是一个简单的行计数,要获得产品的用户,您可以只计算不同的创建者

如果你只想计算平均数,就要马上对计数进行除法

SELECT COUNT(*) / COUNT(DISTINCT products.creator_id) average
FROM products

.

很抱歉没有说得更具体,但我的意思是我也想在查询中除法,这是我不知道怎么做的部分。@Snubber也用它更新了答案。很抱歉没有说得更具体,但我的意思是我也想在查询中除法,这是我不知道怎么做的部分。