首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:查看售出产品的捆绑包

SQL:查看售出产品的捆绑包
EN

Stack Overflow用户
提问于 2019-09-18 03:26:25
回答 4查看 156关注 0票数 1

我有一个下面的示例数据库。我想看看我们卖了多少电视和网络捆绑包。在样本数据中,只有Bob和Trevor销售该捆绑包,所以我们卖出了2个。

如何编写查询每个销售代表售出的捆绑包数量和捆绑包销售总价的查询?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2019-09-18 03:32:33

你可以简单地通过计算他们销售的不同产品来对推销员进行分组-

代码语言:javascript
复制
SELECT Sales_Person, FLOOR(COUNT(DISTINCT product_name)/2) NO_OF_BUNDLES, sum(total_price)
FROM YOUR_TAB
WHERE product_name IN ('TV', 'Internet')
GROUP BY Sales_Person
HAVING COUNT(DISTINCT product_name) >= 2
票数 0
EN

Stack Overflow用户

发布于 2019-09-18 03:41:54

我设想,要实现捆绑销售,同一个销售人员需要将两种产品都卖给同一个客户。

我将通过两个级别的聚合来实现这一点。首先在子查询中按销售人员和客户分组,以标识捆绑包,然后在外部查询中,计算每个销售人员发生了多少此类捆绑包:

代码语言:javascript
复制
SELECT sales_person, COUNT(*) bundles_sold, SUM(total_price) total_price
FROM (
    SELECT sales_person, customer_name, SUM(total_price) total_price
    FROM mytable
    WHERE product_name in ('TV', 'Phone')
    GROUP BY sales_person
    HAVING COUNT(DISTINCT product_name) = 2
) x
票数 0
EN

Stack Overflow用户

发布于 2019-09-18 04:07:17

使用cte的方法如下:

代码语言:javascript
复制
with cte1(sales_person, customer_name, product_count) as
(
select sales_person, customer_name, count(product_name)
from sales
where product_name in ('TV', 'Internet')
group by sales_person, customer_name
having count(product_name) = 2
)
select sales_person, count(product_count)
from cte1
group by sales_person
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57980829

复制
相关文章

相似问题

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