首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL计数where和COUNT all

问MySQL计数where和COUNT all
EN

Stack Overflow用户
提问于 2013-04-04 19:06:08
回答 2查看 571关注 0票数 0

我有一个表(sales),它有四列;

代码语言:javascript
复制
id, user_id, product_id, and date_added.

我需要统计某个用户已经售出的具有某个id的产品的数量,并获得该用户在当前月份售出的产品的总数。

我不能把所有的产品加起来。我有;

代码语言:javascript
复制
SELECT user_id, product_id, count(user_id) 
FROM sales 
WHERE MONTH(date_added) = MONTH(CURRENT_DATE) 
GROUP BY user_id, product_id; 

如何将用户的总销售额相加,以便获得特定product_id的总销售额的百分比?

我希望我的输出看起来像这样;

代码语言:javascript
复制
|----------|----------|----------|----------|
|user_id   |product_id|sales     |total     |
|----------|----------|----------|----------|
|1         |4         |6         |82        |
|2         |4         |3         |121       |
|3         |4         |8         |93        |      
|----------|----------|----------|----------|

其中total是用户进行的销售总数。

(值得一提的是,我不需要mysql来计算百分比-只是为了获得所有产品销售额的总和)

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-04 19:31:06

您必须使用子查询,因为您依赖聚合函数来执行计数

代码语言:javascript
复制
SELECT user_id, @pid:= product_id as product_id, count(user_id),
         (SELECT count(*)
          FROM sales
          WHERE MONTH(date_added) = MONTH( now() )
               AND product_id = @pid
          group by user_id
         ) as total_product_sales
FROM sales 
WHERE MONTH(date_added) = MONTH( now() ) 
GROUP BY user_id, product_id; 
票数 1
EN

Stack Overflow用户

发布于 2013-04-04 19:23:38

其实我不太明白你想要什么.

此查询将为您提供给定用户的“小计”

代码语言:javascript
复制
 SELECT product_id, count(user_id) 
 FROM sales 
 WHERE MONTH(date_added) = MONTH(CURRENT_DATE) 
   AND user_id='YOUR_USER_ID'
 GROUP BY product_id with rollup; 

或者,如果您想要给定当月的产品id和用户id的总体百分比:

代码语言:javascript
复制
 SELECT 
        PARTIAL_SALES/TOTAL_SALES*100 
 FROM
      (SELECT USER_ID,
              count(user_id) AS PARTIAL_SALES
         FROM sales 
              WHERE MONTH(date_added) = MONTH(CURRENT_DATE) 
              AND user_id='YOUR_USER_ID'
              AND PRODUCT_ID='YOUR_PRODUCT_ID'
          GROUP BY USER_ID) AS PARTIAL,
      (SELECT USER_ID, 
              count(user_id) as TOTAL_SALES
         FROM sales 
              WHERE MONTH(date_added) = MONTH(CURRENT_DATE) 
          GROUP BY USER_id) AS TOTAL1
 WHERE PARTIAL.USER_ID=TOTAL.USER_ID;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15809403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档