我每天都会做相当多的数据分析并使用 SQL,但我的查询相当简单,通常会提取大量数据,然后在 Excel 中进行操作,我在 Excel 中更有经验。
这次我尝试生成一些实时图表,这些图表以单个 SQL 查询作为输入。我现在必须在不借助我非常熟悉的 Excel 工具的情况下创建复杂的表格。
问题如下:
我们有电话销售代理,通过接听来电和调用外拨电话来进行预约。这些将产生可能导致销售的潜在客户。该问题的相关表和字段如下:
Contact Table
Agent
Sales Table
Price
OutboundCallDate
我想知道每个电话销售代理在一栏中各自的总销售金额,以及在另一栏中的对外销售值(value)。
最终结果应该如下所示:
+-------+------------+---------------+ | Agent | TotalSales | OutboundSales | +-------+------------+---------------+ | Tom | 30145 | 0 | | Sally | 16449 | 1000 | | John | 10500 | 300 | | Joe | 50710 | 0 | +-------+------------+---------------+
With the below SQL I get the following result:
SELECT contact.agent, SUM(sales.price)
FROM contact, sales
WHERE contact.id = sales.id
GROUP BY contact.agent
+-------+------------+ | Agent | TotalSales | +-------+------------+ | Tom | 30145 | | Sally | 16449 | | John | 10500 | | Joe | 50710 | +-------+------------+
我想将第三列添加到此查询结果中,其中仅对 OutboundCallDate
字段包含数据的记录进行价格求和。有点像(其中 sales.OutboundCallDate
不为空)
我希望这已经足够清楚了。如果情况并非如此,请告诉我。
最佳答案
使用CASE
SELECT c.Agent,
SUM(s.price) AS TotalSales,
SUM(CASE
WHEN s.OutboundCallDate IS NOT NULL THEN s.price
ELSE 0
END) AS OutboundSales
FROM contact c, sales s
WHERE c.id = s.id
GROUP BY c.agent
关于sql - 根据不同的条件添加另一列(SQL 服务器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25572030/