1

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

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

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

4

1 回答 1

2

您可以按价格分组(偏移 1,因为您将分组划分的位置)除以 10,然后转换为整数。考虑 21-30 美元的群体。如果你减去一个,那将是 20-29 美元。除以十(并转换为整数),该组中的任何内容都将返回 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”。

于 2012-10-18T22:26:59.353 回答