自定义查询计数和分组

时间:2012-10-18 22:23:17

标签: mysql

我正在尝试通过价格“组”找到一种在数据库表中对价格进行分组的方法。 所以我的数据库表看起来像这样:

+-------+------------------+
| 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          |
+-------------+------------+

我没有任何我尝试过的代码,因为我不确定从哪里开始。仍在寻找寻找线索。

1 个答案:

答案 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”。