mysql - 如何按音调分组?
问题描述
我有一张“付款”表
user_id amount
1 300
1 100
2 100
2 100
3 10
4 200
我应该进行什么查询以按组显示结果:
diapason number
0 -10 0
10 - 100 1
100 -200 3
more than 200 2
我认为我应该使用“拥有”?
解决方案
对于这种类型的查询,您可以使用UNION
:
SELECT '0-10' as diapason, SUM(CASE WHEN amount < 10 THEN 1 ELSE 0 END) AS number FROM payments
UNION
SELECT '10-100', SUM(CASE WHEN amount BETWEEN 10 AND 99 THEN 1 ELSE 0 END) FROM payments
UNION
SELECT '100-200', SUM(CASE WHEN amount BETWEEN 100 AND 199 THEN 1 ELSE 0 END) FROM payments
UNION
SELECT 'more than 200', SUM(CASE WHEN amount >= 200 THEN 1 ELSE 0 END) FROM payments
输出:
diapason number
0-10 0
10-100 1
100-200 3
more than 200 2
推荐阅读
- c++ - 使用赋值运算符而不是隐式构造函数
- javascript - 未捕获 [错误:找不到 react-redux 上下文值;请确保组件被包裹在一个
] - html - 具有索引 i 和 j 的 ngFor 中的角本构循环 ngFor
- angular - Angular 不会路由到组件
- javafx - NetBeans 12.3 损坏的参考:dist jar
- microservices - 一个带有状态存储的 Dapr sidecar 可以在多个实例后面工作吗?
- c# - 如何定义一个字段 ONCE,然后在多个实体中使用该定义?
- javascript - 如何将链接添加到图像或标题?
- php - 使用 php 从快照中获取 Azure 文件
- java - 我正在尝试创建一种方法来查找树中的父节点和祖父节点,但我不断收到 nullptr 异常