MYSQL分段統計


產品表

CREATE TABLE `product` (

  `product_id` int(11) NOT NULL AUTO_INCREMENT,

  `product_model` varchar(255) NOT NULL,

   `product_price` decimal(15,4) NOT NULL,  

   `product_status` tinyint(1) unsigned NOT NULL,

   `product_add_time` int(11) unsigned DEFAULT '0',

  PRIMARY KEY (`product_id`),

  KEY `product_price` (`product_price`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf-8
分類表

CREATE TABLE `category` (

    `category_id` int(11) unsigned NOT NULL AUTO_INCREMENT,

   `category_name` varchar(255) NOT NULL,

  PRIMARY KEY (`category_id`)

  ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf-8
產品分類表

CREATE TABLE `product_to_category` (

  `product_id` int(11) unsigned NOT NULL,

  `category_id` int(11) unsigned NOT NULL,

  PRIMARY KEY (`product_id`,`category_id`)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf-8

要獲取產品價格區間統計上架的Shoes類別的產品,狀態為在售\停售的數目

SELECT    

sum(CASE when product.product_price<10 then 1 else 0 end)   AS '(0,10)',    

sum(CASE when  product.product_price>=10 and  product.product_price<20 then 1 else 0 end)   AS '[10,20)',    

sum(CASE when  product.product_price>=20 and  product.product_price<30 then 1 else 0 end)   AS '[20,30)',    

sum(CASE when  product.product_price>=30 and  product.product_price<40 then 1 else 0 end)   AS '[30,40)',    

sum(CASE when  product.product_price>=40  then 1 else 0 end)   AS '[40,+)'  

FROM test.product AS product 

LEFT JOIN test.product_to_category map ON product.product_id = map.product_id

LEFT JOIN test.category category ON map.category_id = category.category_id

 WHERE category.category_name = 'Shoes' group by product.product_status;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM