我正在尝试通过价格“组”找到一种在数据库表中对价格进行分组的方法。 所以我的数据库表看起来像这样:
+-------+------------------+
| Field | Type |
+-------+------------------+
| id | int(11) unsigned |
| name | varchar(255) |
| price | varchar(30) |
+-------+------------------+
这些是我的数据库表中的相关字段。 我想要完成的是运行一个查询,按价格范围对结果进行分组,因此介于$ 1和$ 10之间的项目将进入组#1; 11美元到20美元将进入价格组#2等......所以它应该是这样的:
+-------------+------------+
| price_group | item_count |
+-------------+------------+
| $1-$10 | 10 |
+-------------+------------+
| $11-$20 | 8 |
+-------------+------------+
| $21-$30 | 22 |
+-------------+------------+
| $31-$40 | 58 |
+-------------+------------+
| $41-$40 | 3 |
+-------------+------------+
我没有任何我尝试过的代码,因为我不确定从哪里开始。仍在寻找寻找线索。
答案 0 :(得分:2)
您可以按价格分组(由于您放置组分区的位置偏移1),除以10,转换为整数。考虑小组$ 21- $ 30。如果你减去一个,那将是$ 20- $ 29。除以10(并转换为整数),该组中的任何内容都将返回2美元,为您提供价格组的常量。
SELECT CAST((price - 1) / 10 AS UNSIGNED) AS price_group,
SUM(item_count) as total_item_count
FROM table_name
GROUP BY price_group
另请注意,我SUM(item_count)
获得该组的总数。
此处返回的price_group
只是十位数。例如,对于“$ 21- $ 30”组,返回的price_group
将为“2”。