首页 > 解决方案 > 进行这样的分组的查询是什么?

问题描述

我有一个看起来像这样的表:

| order_id | 数量 |

| -------- | --- |

| 00001 | 27 |

| 00002 | 17 |

我想做这样的东西

| order_id | 数量 | 20 | 5 | 3 | 1 |

| -------- | --- | -- | - | - | - |

| 00001 | 27 | 1 | 1 | 0 | 2 |

| 00002 | 17 | 0 | 3 | 0 | 2 |

有谁知道查询以进行这样的分组?提前致谢

标签: mysql

解决方案


通过减少来计算每一列(因为想要一个更好的词)

SET @N = 18;
SELECT FLOOR(@N/20) '20',
         FLOOR((@N-(FLOOR(@N/20)*20))/5) '5',
         FLOOR((@N-((FLOOR(((FLOOR(@N/20)*20)))) +
          ((FLOOR((@N-(FLOOR(@N/20)*20))/5)) *5)) 
         ) / 3) '3'
         ;

推荐阅读