我有这个查询和子查询,我想知道是否可以避免使用子查询。
正如您所看到的,我需要将用户在一天内获得的分数与100之间的最大值相加。然后,我需要对所有天完成的总点数进行求和。
SELECT sum(daily_points) as total
FROM (
SELECT LEAST(SUM(points.value), 100) AS daily_points
FROM points
WHERE user_id = 1234
AND points.type = 'bonus'
GROUP BY DATE(points.created)
) AS points_sum;
我不知道是否可以对单个查询执行此操作,因为我需要先对寄存器进行分组,然后再对其求和。
此外,我还尝试对子查询使用ROLLUP,但它不起作用,因为只有在点不超过100的情况下,我才需要在一天内对完成的点求和。
提前感谢大家的帮助。
发布于 2016-01-22 15:13:22
在这里,子查询恐怕是正确的方法。
https://stackoverflow.com/questions/30477853
复制相似问题