我有一堆带有相关计数的销售ID,使用ntile函数将其分成四个不同的组/部分,表数据如下所示:
existing Data of sales
我想写一个SQL来平衡所有四个组的平均计数。如果你观察数据,第四组有两个销售ID,数量巨大,应该分配给其他组,如下所示:
Required data of sales的
选择TABLEA.SALESID,TABLEA.COUNT,ntile(4)OVER(ORDER BY null)作为零件编号从TABLEA;
我有一堆带有相关计数的销售ID,使用ntile函数将其分成四个不同的组/部分,表数据如下所示:
existing Data of sales
我想写一个SQL来平衡所有四个组的平均计数。如果你观察数据,第四组有两个销售ID,数量巨大,应该分配给其他组,如下所示:
Required data of sales的
选择TABLEA.SALESID,TABLEA.COUNT,ntile(4)OVER(ORDER BY null)作为零件编号从TABLEA;
3条答案
按热度按时间lsmepo6l1#
对于固定数量的bucket,可以使用
MODEL
子句:字符集
其中,对于样本数据:
型
输出:
| CNT|零件编号|铲斗| BUCKET |
| --|--|--| ------------ |
| 五千|四个|一个| 1 |
| 四千|四个|二个| 2 |
| 三千|三个|三个| 3 |
| 二000年|三个|四个| 4 |
| 一千|三个|四个| 4 |
| 五百|二个|三个| 3 |
| 四百|二个|四个| 4 |
| 三百|二个|四个| 4 |
| 两百|一个|三个| 3 |
| 一百|一个|三个| 3 |
| 十个|一个|四个| 4 |
fiddle
jm81lzqq2#
您可以使用
PIPELINED
函数将行拆分为固定数量的bucket,每次将每个连续行添加到最空的bucket:给定样本数据:
字符集
然后你可以创建一个函数和支持的类型:
型
然后声明:
型
输出:
| CNT|零件编号|铲斗| BUCKET |
| --|--|--| ------------ |
| 五千|四个|一个| 1 |
| 四千|四个|二个| 2 |
| 三千|三个|三个| 3 |
| 五百|二个|三个| 3 |
| 两百|一个|三个| 3 |
| 一百|一个|三个| 3 |
| 二000年|三个|四个| 4 |
| 一千|三个|四个| 4 |
| 四百|二个|四个| 4 |
| 三百|二个|四个| 4 |
| 十个|一个|四个| 4 |
fiddle
7gs2gvoe3#
为了好玩,使用递归查询:
字符集
| 中国国家电视台|零件号|铲斗| bucket |
| --|--|--| ------------ |
| 五千|四个|一个| 1 |
| 四千|四个|二个| 2 |
| 三千|三个|三个| 3 |
| 五百|二个|三个| 3 |
| 两百|一个|三个| 3 |
| 一百|一个|三个| 3 |
| 二000年|三个|四个| 4 |
| 一千|三个|四个| 4 |
| 四百|二个|四个| 4 |
| 三百|二个|四个| 4 |
| 十个|一个|四个| 4 |