SQL 直方图:大于 10 个订单组为“10+ 桶”

Posted

技术标签:

【中文标题】SQL 直方图:大于 10 个订单组为“10+ 桶”【英文标题】:SQL Histogram: Greater than 10 orders group as "10+ bucket" 【发布时间】:2019-03-23 03:35:39 【问题描述】:

问题是:创建一个 sql 查询以提供 x 人发出 y 次订单的数量的直方图。任何超过 10 个订单的人都应该被分组到一个“10+”桶中

第 1 步:我创建了一个“诱惑”,如下所示:

Customerid    Order_Count
----------    -----------
CENTC         1
GROSR         2
LAZYK         2
LAUGB         3
NORTS         3
FRANR         3

第 2 步:我尝试使用 floor 函数创建直方图存储桶,但无法使用以下语法到达存储桶 '10+'

select bucket, count(*) from
(select floor(order_count/10.00)*10 as bucket from TempTable
) t group by bucket

请提出其他合适的方法。谢谢!

【问题讨论】:

【参考方案1】:

您可以使用case 表达式来定义存储桶,然后进行聚合以获得最终摘要:

select (case when order_count >= 10 then '10+' else CustomerId
        end) as CustomerId,
       sum(Order_Count) as Order_Count
from temptable
group by (case when order_count >= 10 then '10+' else CustomerId
          end);

【讨论】:

以上是关于SQL 直方图:大于 10 个订单组为“10+ 桶”的主要内容,如果未能解决你的问题,请参考以下文章

频率分布直方图的中位数怎么求?

SQL基础:语句执行顺序

图解排序 8/10 - 桶排序

排序算法 (10.桶排序)

在java中写个程序,输入10组数字,每组为0-3之间的6位数,算出相似位数最多的两组,并打印结果。

具有 after_key 和 size 的 ElasticSearch 复合聚合