我有两个表格a
和b
。我想将number
中的a
与共享ID的number
中的b
进行比较。 a
只有一行,而b
有多行。如果b
的总和小于a
,那么a
的那一行应该添加到总和中,否则应该跳过它。
Table a
ID Number
4 50
5 60
6 70
Table b
ID Number SharedID
1 30 4
2 25 4
3 50 5
4 5 5
5 30 6
6 10 6
使用该示例:b 1和2大于4,因此不会计算。 b 3和4小于5因此它会计数。 b 5和6小于6,所以它会计数。总数应为130。
我在将一行与多行进行比较时遇到问题,然后只对一些数字进行求和。
答案 0 :(得分:2)
尝试此查询:
SELECT SUM(a.Number)
FROM a INNER JOIN
(
SELECT b.SharedID, SUM(b.Number) AS theSum
FROM b
GROUP BY b.SharedID
) t
ON a.ID = t.SharedID
WHERE t.theSum < a.Number
概念上最简单的选择是创建一个包含表b总和的临时表,然后创建一个返回表a的JOIN
。 WHERE
子句将您的总数限制为仅大于b总和的Number
个值。
答案 1 :(得分:2)
这应该做的工作:
select sum(Number)
from a
where Number > (select sum(Number) from b where b.SharedID = a.ID)
答案 2 :(得分:0)
agrep("abteam",c("acb","abd","ab"),value=T,ignore.case = TRUE,max = list(del = 10, ins = 10, sub = 10))
这应该可以解决问题