基本上,当某个值(在我的案例Communications_ID中)相等时,我试图总结计算字段的值。这些分数与相同的Communication_ID相关联,我想总结这些值。

我是SQL的新手,这是我误导的第一次尝试:

SELECT *
FROM consumer_action_log as cal1
JOIN consumer_action_log as cal2
    ON cal1.COMMUNICATIONS_ID=cal2.COMMUNICATIONS_ID
    AND cal1.COMM_TYPE_ID=4
有帮助吗?

解决方案

SELECT COMMUNICATIONS_ID, SUM(fieldName) 
FROM consumer_action_log
WHERE COMM_TYPE_ID = 4
GROUP BY COMMUNICATIONS_ID

我认为不需要在这里加入桌子。

其他提示

即使内在连接的结果相同,也最好将ON和条件分开。更清楚地链接了两个表。

SELECT sum(cal2.somecolumn)
FROM consumer_action_log as cal1
JOIN consumer_action_log as cal2
    ON cal1.COMMUNICATIONS_ID=cal2.COMMUNICATIONS_ID
WHERE cal1.COMM_TYPE_ID=4
  • 查找cal1记录 COMM_TYPE_ID=4
  • 加入CAL2(自加入),communications_id等于cal1
  • 总结一下Cal2的一些列

如果过滤器 COMMS_TYPE_ID=4 导致多个 cal1.COMMUNICATIONS_IDS,那么您将要 GROUP BY communications_id(从Cal1或Cal2中无关紧要 - 它们是相同的)

SELECT cal2.COMMUNICATIONS_ID, sum(cal2.somecolumn)
FROM consumer_action_log as cal1
JOIN consumer_action_log as cal2
    ON cal1.COMMUNICATIONS_ID=cal2.COMMUNICATIONS_ID
WHERE cal1.COMM_TYPE_ID=4
GROUP BY cal2.COMMUNICATIONS_ID
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top