Mysql 具有金额范围的计数和总和

Mysql 具有金额范围的计数和总和,mysql,Mysql,我有一个包含用户id和项目金额的表 每次顾客买东西时,他的id和物品数量都会有新的记录 现在我需要看看有多少人购买了1000+件物品,有多少人购买了1000-900件物品,依此类推 我现在对分组、计数和求和有点不知所措 它实际上统计了用户数,但显示了一些随机数据?我不知道有多少人买了什么。有没有办法做得更好?我的问题错了吗?这让我很困惑 SELECT count(*), sum(items_amount) as amount FROM `purchases` WHERE 1 GROUP

我有一个包含用户id和项目金额的表

每次顾客买东西时,他的id和物品数量都会有新的记录

现在我需要看看有多少人购买了1000+件物品,有多少人购买了1000-900件物品,依此类推

我现在对分组、计数和求和有点不知所措

它实际上统计了用户数,但显示了一些随机数据?我不知道有多少人买了什么。有没有办法做得更好?我的问题错了吗?这让我很困惑

SELECT count(*), sum(items_amount) as amount 

FROM `purchases`

WHERE 1

GROUP BY user_id

HAVING amount >= 1000 
   OR amount BETWEEN 1000 AND 900
   OR amount BETWEEN 900 AND 800
   OR amount BETWEEN 800 AND 700
   OR amount BETWEEN 700 AND 600
   OR amount BETWEEN 600 AND 500
   OR amount BETWEEN 500 AND 400
   OR amount BETWEEN 400 AND 300
   OR amount BETWEEN 300 AND 200
   OR amount BETWEEN 200 AND 100
   OR amount BETWEEN 100 AND 1
输出现在看起来像这样,但这个数量我不明白:

COUNT(*) AMOUNT

125      94969
4        2267
69       1352
148      2123
667      13695
433      1099
629      1482
697      1228
303      1633
415      1719 
我想看到的或多或少是:

count(*) amount

125      1000+
4        1000-900
69       900-800
148      800-700
667      700-600
433      600-500
.... 

我知道它看起来不会完全像这样,但我需要得到这些项目范围内的人数。

如果没有任何样本数据,很难确定,但我认为您想要的是这样的。它按用户id获取项目金额之和,然后按金额范围对其进行分组:


items\u amount列有int或varchar类型?@BhargavChudasama user\u id和items\u amount是int,只包含数字查询输出是什么以及您想要的方式?可能重复@BhargavChudasama编辑的我的问题
SELECT
    CASE WHEN amount >= 1000 THEN '>=1000' 
         ELSE CONCAT('BETWEEN ', (amount DIV 100) * 100, ' AND ', (amount DIV 100) * 100 + 99)
    END AS amt,
    COUNT(p.user_id) AS num_users
FROM (SELECT SUM(items_amount) AS amount 
      FROM `purchases`
      WHERE 1
      GROUP BY user_id) p
GROUP BY amt