简而言之,我希望创建一个报告,显示客户列表(行),我们的服务位于顶部(列)。在每个单元格中,将有一个数字,表示对话类型'。我们的想法是让我们的销售人员能够看到 - 如果客户知道我们提供的特定服务,他们是否与其一起生活,如果他们已经尝试过并且讨厌它等等(这些是对话类型)。这是为了避免一遍又一遍地使用相同的信息轰炸客户。从本质上讲,它是销售团队可以用来在内部保持同一页面的工具。
以下是我的表格:
服务(id,service_name,description) 客户端(id,client_name) 对话(id,client_id,service_id,conversation_type_id) conversation_type(id,description)
到目前为止,这是我的问题:
SELECT
company,
CASE WHEN service_name= 'A' THEN conversation_type_id END AS 'A',
CASE WHEN service_name= 'B' THEN conversation_type_id END AS 'B',
CASE WHEN service_name= 'C' THEN conversation_type_id END AS 'C',
CASE WHEN service_name= 'D' THEN conversation_type_id END AS 'D'
FROM
services srv
INNER JOIN
conversations con ON srv.id=con.service_id
INNER JOIN company cmp ON con.client_id=cmp.id
INNER JOIN conversation_type typ ON con.conversation_type_id=typ.id
GROUP BY company;
看起来很接近,但不是打印
----------------------------------------------
| | A | B | C | D |
|client 1 | 1 | 2 | 1 | 5 |
|client 2 | 3 | 2 | 3 | 4 |
|client 3 | 1 | 5 | 1 | 1 |
-----------------------------------------------
反而打印
----------------------------------------------
| | A | B | C | D |
|client 1 | 1 | | | |
|client 1 | | 2 | | |
|client 1 | | | 1 | |
|client 1 | | | | 5 |
-----------------------------------------------
我认为这是一个分组问题,但我已经尝试了各种各样的事情,但它似乎并不合适。有任何想法吗?真的,有更好的方法吗?非常感谢任何见解。谢谢。
答案 0 :(得分:0)
你可以像草莓所说的那样把Max(案例......)放在每个案例中。或者你可以把每个案例放在一个查询然后加入它们,就像这样(第一个肯定更好):
In [63]: df /= df.iloc[0]/100
In [64]: df
Out[64]:
AAPL F IBM
Date
2016-05-02 100.000000 100.000000 100.000000
2016-05-03 101.644596 98.604993 99.215255
2016-05-04 100.587358 97.723935 99.297856
2016-05-05 100.179074 97.797357 100.826046
2016-05-06 99.620377 98.678414 102.368976