Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL заявка за групиране на данни в различни диапазони

Трябва да изградите вградена таблица, съдържаща всички ценови диапазони. След това извършете LEFT JOIN с извлечена таблица въз основа на вашата заявка, за да получите очаквания резултат:

SELECT x.PriceRange, COALESCE(TotalWithinRange, 0) AS TotalWithinRange
FROM (
  SELECT "0 - 10" AS PriceRange 
  UNION SELECT "10 - 20"
  UNION SELECT "20 - 30"
  UNION SELECT "30 - 40"
  UNION SELECT "40 - 50"
  UNION SELECT "over 50" ) x
LEFT JOIN (  
   SELECT
      CASE when price >= 0 and price <= 10 then "0 - 10"
           when price > 10 and price <= 20 then "10 - 20"
           when price > 20 and price <= 30 then "20 - 30"
           when price > 30 and price <= 40 then "30 - 40"
           when price > 40 and price <= 50 then "40 - 50"
           else "over 50"
      END AS PriceRange,
      COUNT(*) as TotalWithinRange
   FROM YourTable
   GROUP BY 1 ) y ON x.PriceRange = y.PriceRange

SQL Fiddle Демо



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql поръчка и groupby

  2. Как да вземете физическо резервно копие за не-предприятие MySQL INNODB двигател

  3. Има ли еквивалент на `date_default_timezone_set() на PHP, който работи в MySQL?

  4. UTF-8 MySQL и Charset

  5. Използване на MySQL за изчисляване на салда от дебити и кредити в една таблица