我有此查询和子查询,我想知道是否有可能避免使用子查询。

如您所见,我需要将用户一天中获得的最高得分之间的最大值相加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的情况下,我才必须将一天中完成的积分相加。

预先感谢大家的帮助。

最佳答案

恐怕子查询是这里的正确方法。

关于mysql - MySQL:我需要在GROUP BY记录后求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30477853/

10-10 07:50