3

重複の可能性:
SQL では、どのように範囲内で「グループ化」できますか?

私はそのようなテーブルを持っています

price
id  |  prices
1   |   3910
2   |   4125
3   |   3740
4   |   2700
5   |   1600
6   |   2150
7   |   2430

私の希望する出力はそのようなものです

1500-1999  |  2000-2499 | 2500-2999  | 3000-3499 | 3500-3999 | 4000-4499  |   allvalues
--------------------------------------------------------------------------------------
   1       |      2     |      1     |     0     |     2     |     1      |   7

expli :

  • 1500-1999 --> 1500 から 1999 までのカウント数が必要であることを意味します。

  • allvalues は、すべての値をカウントすることです。

    *誰かがそこでテストする必要がある場合は、ここにSQLフィドルがあります。

すべてが明確であることを願っています。助けてくれてありがとう。

4

1 に答える 1

5

これは範囲を使用した一種のピボットです。を使用したピボット クエリのパターンは同じです。SUM(CASE...)

SELECT
  SUM(CASE WHEN prices BETWEEN 1500 AND 1999 THEN 1 ELSE 0 END) AS `1500-1999`,
  SUM(CASE WHEN prices BETWEEN 2000 AND 2499 THEN 1 ELSE 0 END) AS `2000-2499`,
  SUM(CASE WHEN prices BETWEEN 2500 AND 2999 THEN 1 ELSE 0 END) AS `2500-2999`,
  SUM(CASE WHEN prices BETWEEN 3000 AND 3499 THEN 1 ELSE 0 END) AS `3000-3499`,
  SUM(CASE WHEN prices BETWEEN 3500 AND 3999 THEN 1 ELSE 0 END) AS `3500-3999`,
  ...
  COUNT(*) AS `All Values`
FROM
  prices

残りの範囲を代用します...CASE条件が一致し、それらが集計によって合計される場合、0または1が生成されSUM()ます。

http://sqlfiddle.com/#!2/5803e/10

于 2013-01-05T14:59:50.503 に答える