【问题标题】:SQL: Count the actions per customerSQL:计算每个客户的操作
【发布时间】:2020-10-09 05:17:42
【问题描述】:

我需要一些 SQL 帮助。

我的表格包含客户 ID、日期和操作说明。它看起来如下:

我希望它具有以下结构:每次同一客户在同一天执行任何操作时,都计为每个客户的一次操作(也许还可以创建一个内部带有“1”的数字列每个客户每个不同日期的每个单元格)。所以,最后我想有以下结构:

Customer - Date (only distinct dates for each cutomer) - Action (1).

最后我想计算特定时间范围内每个客户的操作总和。

【问题讨论】:

  • 欢迎玛丽亚,您只能提出具体问题。你的可以争论好几天。阅读How to Ask,展示你做了什么以及它是如何失败的。
  • 您可以尝试一些 SQL 功能,例如count(col) from TABLE where <conditions> group by col
  • select ID_KUNDE, count(*) from ??? group by COD_SE_ACTION where TST_EVENT between (start of timeframe) AND (end of timeframe)
  • 请以表格文本的形式提供示例数据和所需结果。

标签: sql sas


【解决方案1】:

使用 group by 和 count 尝试类似的方法

更新查询:

SELECT CA.ID, CA.COD_SE_ACTION, COUNT(CA.COD_SE_ACTION), TST_EVENT FROM 
CUSTOMER_ACTIONS CA GROUP BY CA.ID, CA.COD_SE_ACTION,TST_EVENT ORDER BY 
ID,CA.COD_SE_ACTION ;

【讨论】:

  • 谢谢,但每次在同一天(每位客户)执行一项操作,都应计为每位客户每天一次操作。使用此代码,我只能获得每位客户每天的操作总和。
【解决方案2】:

这应该可行:

SELECT CustomerId, SUM(Count) FROM ( 
SELECT 
   CA.ID [CustomerId], 
   CA.COD_SE_ACTION [Action], 
   COUNT(CA.COD_SE_ACTION) [Count], 
   TST_EVENT [Date]
FROM CUSTOMER_ACTIONS CA 
GROUP BY 
   CA.ID, 
   CA.COD_SE_ACTION, 
   TST_EVENT 
 ) WHERE Date >= '2020/01/01' AND Date <= '2020/10/10'
GROUP BY CustomerId

【讨论】:

    猜你喜欢
    • 2017-08-08
    • 1970-01-01
    • 2022-01-13
    • 2021-07-03
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多