我有两张table…第一张有 order_id
, order_status
,和 user_id
.... 第二张table有 order_id
,和 product_id
, product_quantity
就像下面一样
第一张table
order_id | order_status | user_id
----------------------------
1 | 5 | 2
2 | 1 | 1
3 | 5 | 1
4 | 5 | 1
第二张table
order_id | product_id | quantity
----------------------------
1 | 200 | 4
2 | 201 | 2
2 | 200 | 1
2 | 207 | 4
3 | 201 | 1
3 | 200 | 6
4 | 201 | 8
我想得到
user_id | Total_orders | quantity
----------------------------
1 | 2 | 15
2 | 1 | 4
获取用户标识,其中订单状态为5,按用户标识分组求和(数量)
我的尝试
SELECT h.user_id
, COUNT(IF(h.order_status = 5,1,0)) AS total_orders
, SUM(o.quantity) AS quantity
FROM table1 h
LEFT
JOIN table2 o
ON o.order_id = h.order_id
WHERE h.order_status = 5
GROUP
BY h.user_id
但是,它给出了计算左表中order\u id的所有示例的结果,比如。。。状态为5的用户\u id 1的订单总数为2,但我的查询返回3作为计数( order_id
)bcz用户id 1传递的订单有3个示例。
任何建议或解决方案…我被困很久了:(
谢谢
1条答案
按热度按时间e5nqia271#
您需要计算
order_id
:另外,使用
IF
内部功能COUNT
这样地:从那以后就没有意义了
h.order_status
总是等于5,因为WHERE
条款:此处演示