基本上,当某个值(在我的例子中为COMMUNICATIONS_ID)相等时,我试图总结计算字段的值。这些分数与相同的COMMUNICATIONS_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
答案 0 :(得分:3)
SELECT COMMUNICATIONS_ID, SUM(fieldName)
FROM consumer_action_log
WHERE COMM_TYPE_ID = 4
GROUP BY COMMUNICATIONS_ID
我认为没有必要在这里加入表格。
答案 1 :(得分:1)
分割ON和WHERE条件可能更好,即使INNER JOIN的结果相同也是如此。使两个表的链接更加清晰。
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
COMM_TYPE_ID=4
如果COMMS_TYPE_ID=4
上的过滤器导致多个cal1.COMMUNICATIONS_ID
,那么您需要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