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 ドルのグループを考えてみましょう。1つ差し引くと、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で返されるのは 10 の桁だけです。たとえば、グループ「$21-$30」の場合、price_group「2」が返されます。

于 2012-10-18T22:26:59.353 に答える