【发布时间】:2019-01-17 20:36:47
【问题描述】:
我得到registration 表中所有行的总和。表结构如下:
row_id row_registration_fee row_amount row_class row_user_id
1 200 1000 18 1
2 200 2510 18 1
3 0 1600 19 2
4 0 1500 19 1
5 200 1254 19 3
6 200 3000 19 1
7 200 2000 19 1
8 0 100 20 1
9 0 300 20 2
一个用户可以有多个注册费。我需要通过row_class 得到所有row_registration_fee 的总和。结果应该是这样的:
row_registration_fee row_class
200 18
400 19
0 20
我的选择:
SELECT (COUNT(DISTINCT(row_user_id))* 200) as 'fee'
FROM registration
WHERE row_registration_fee > 0
GROUP BY row_class
这里有没有更好的查询可以给出类似上述示例的结果?
使用 PHP 中的 foreach 循环,结果将显示在表格行中。截至目前,它只会给我两个注册费结果,row_class 18 和row_class 19 它不包括row_class 20,因为它只选择付费用户。
补充说明:注册费为2个或以上的用户,如果用户总共有400个费用,则应该只计算200个。
【问题讨论】:
-
row_class
18的结果应该是200?在您的表格中,我看到两行带有row_class = 18和row_registration_fee的此类是200和200,所以您应该得到400否? -
@Mickael Leger 我认为 op 想要忽略重复注册(按 row_user_id 和 row_class)
-
我们可以假设最高 id 是每个用户最准确的费用吗?
-
@P.Salmon 不,逻辑是获取用户的总费用,如果
total fee > 200则应包括在内以计算他的费用。 -
所以如果一个用户注册一个类 3 次 2 为 200 和 1 为 300 的结果应该是 500?