我有这个查询和子查询,我想知道是否可以避免使用子查询。
正如您所看到的,我需要将用户在一天中得分的最大值与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的情况下,我必须总结在一天内完成的点数。
提前感谢大家的帮助。
答案 0 :(得分:1)
子查询是正确的方法,我很害怕。