使用group by statement-MYSQL中的聚合列

时间:2016-07-21 11:45:42

标签: mysql sql group-by case aggregate-functions

下面是我在group by语句中使用聚合列时抛出错误的sql查询。请告知如何在MySQL中有效地完成它。

2

2 个答案:

答案 0 :(得分:0)

您的问题并不清楚,但我可以看到您需要创建一个函数并将值sm.pace传递给它,这将使用大小写并返回适当的值。

答案 1 :(得分:0)

我猜你真的不想要avg()。如果你想要每个类别一行,这可能是你想要的:

SELECT (CASE WHEN sm.pace < 0.30 THEN 'Ineligible' 
             WHEN sm.pace >= 0.30 AND sm.pace < 0.40 THEN 'Tier1' 
             WHEN sm.pace >= 0.40 AND sm.pace < 0.50 THEN 'Tier2'
             WHEN sm.pace >= 0.50 AND sm.pace < 0.75 THEN 'Potential'
             WHEN sm.pace > 0.75 THEN 'Inline'
        END) AS Category,  
       ROUND(SUM(sm.balance_due), 2)
FROM SUMMARY sm
GROUP BY Category;

如果这是你想要的,你可以利用按顺序评估CASE语句的事实来简化代码:

SELECT (CASE WHEN sm.pace < 0.30 THEN 'Ineligible' 
             WHEN sm.pace < 0.40 THEN 'Tier1' 
             WHEN sm.pace < 0.50 THEN 'Tier2'
             WHEN sm.pace < 0.75 THEN 'Potential'
             ELSE 'Inline'
        END) AS Category,  
       ROUND(SUM(sm.balance_due), 2)
FROM SUMMARY sm
GROUP BY Category;

注意:这会将NULL值合并到'Inline'投票中,而不是将它们放入NULL类别。