【问题标题】:How can I get max 20 group by count between min and max value如何通过最小值和最大值之间的计数获得最多 20 个组
【发布时间】:2021-10-14 15:18:11
【问题描述】:

我有一张桌子叫产品。此产品表中的示例,有 2000 部不同价格的 iPhone 11。这里最低价格为 400 美元,最高价格为 30000 美元

从这个范围内,我需要按产品计数的 20 个范围组。示例

400 - 1520 = 10
1520 - 3040 = 20 
-----
-----
28480 - 30000 = 23

我只能进行范围查询以在产品之间进行查找

SELECT * FROM products where price BETWEEN 400 AND 300000

这里如何通过两个值之间的计数得到 20 个范围组?

【问题讨论】:

  • 生成或硬编码这些范围边界值(从-到,在 CTE 或子查询中)并将您的数据加入其中。
  • @Akina 你能给我举个例子吗?

标签: mysql sql


【解决方案1】:

您可以使用NTILE() 函数将数据分成特定数量的组。

SELECT
bucket_no,
min(price),
max(price),
count(*)
FROM
(SELECT
price,
ntile(20)Over(order by price asc) as bucket_no
from table)A
group by bucket_no;

如果您想对每个产品类别执行此操作,则可以在NTILE() 函数中使用partition by

请参阅此内容以进一步了解: https://www.mysqltutorial.org/mysql-window-functions/mysql-ntile-function/

【讨论】:

    猜你喜欢
    • 2019-03-20
    • 2020-04-06
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多