假设我有这个 MySQL 表:
id place_id area_mq n
-- -------- ------- --
1 1 50 1
2 2 90 1
3 2 20 1
4 3 10 1
5 3 10 2
6 3 10 3
7 4 20 1
8 4 20 2
9 5 15 1
10 5 25 1
id
是主键,place_id
代表一个区域id,area_mq
是mq中这个地方的表面积。
我要做的是找到一个紧凑的查询来计算area_mq
这些规则的总和:
- 如果相同,
n
则计算每个(f.ex for =2,我计算总和中的 90和20)place_id
area_mq
place_id
- 如果相同
n
的不同,则只place_id
计算一次(可以这样做,因为对于这些“地方”,值将是相同的;f.ex. =4,有两个 20,我只求和 20 而不是 40) .area_mq
place_id
在这个例子中,我的正确总数是:50 + (90 + 20) + 10 + 20 + (15 + 25)。
我可以通过查询(无代码或过程)来完成此操作吗?如果对 n 的要求颠倒了,那么使用 GROUP BY 和子查询会很简单......但是在这些条件下,我被卡住了。