【发布时间】:2015-08-10 16:57:31
【问题描述】:
我有下表:
Date | Flag| Val | Weight
1 | A | 5 | 2
1 | B | 5 | 2
2 | A | 10 | 1
3 | A | 10 | 1
3 | B | 10 | 1
如果我按 Flag 列分组 SUM(val * weight) / SUM(weight),那么我将得到 A:7.5,B:6.67。但是,这是因为第二个日期没有 B 的条目。我想将其视为零值。所以我真的应该得到 A:7.5,B:5。
如何在不修改表并为 B 添加零行的情况下使用 SQL?
【问题讨论】:
-
是 MySQL 还是 SQL Server?
-
如果那是你想要做的,那就不叫
weighted average -
MySQL。是的,它是加权平均值,但其中一行没有被包括在内,因为该行没有数据。
-
即使你说的已经完成了,它也会返回相同的结果,因为 0 不会改变任何东西。
标签: sql weighted-average