0

这是问题。假设我有这样的表

id | MF_SONUC   
----------    
1  | 5  
2  | 8  
3  | 15  
4  | 12  
5  | 18  
6  | 3  
7  | 40  

我想要实现的是通过将值除以某个值来进行分组(让我们取 8)。所以结果应该是这样的

count| step 
----------- 
 3   | 1  
 2   | 2  
 1   | 3  
 1   | 5  

到目前为止我得到了这个

SELECT COUNT(CEILING( MF_SONUC /8 )) AS counter , MF_SONUC
FROM `mytable`
ORDER BY CONVERT( REPLACE( MF_SONUC, ',', '' ) , DECIMAL( 10, 2 ) ) ASC
GROUP BY CEILING( MF_SONUC /8 )

这里的 group 子句引发了错误。有人可以帮我吗?谢谢

4

1 回答 1

4

首先,您的排序有些错误:ORDER BY子句必须在GROUP BY子句之后。

其次,里面的计算COUNT()是不必要的,直接扔掉就行了。

最后我猜这个CEILING操作也应该是结果集的一部分,所以你可以重用它,GROUP BY如下所示:

SELECT COUNT(*) AS counter , CEILING( MF_SONUC /8 ) AS `step`
FROM `mytable`
GROUP BY step
ORDER BY CONVERT( REPLACE( MF_SONUC, ',', '' ) , DECIMAL( 10, 2 ) ) ASC

示例小提琴

于 2013-08-19T11:51:59.107 回答