一个MySQL统计问题(某产品的购买次数与购买人数
有一张订单(order)表,凡是购买了产品,都会记录在这张表中,记录下是哪个产品、哪个用户购买的,以及时间:
-- ---------------------------- -- Table structure for order -- ---------------------------- DROP TABLE IF EXISTS `order`; CREATE TABLE `order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `product_id` int(11) NOT NULL COMMENT '产品id', `user_id` int(11) NOT NULL COMMENT '用户id', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
假设我现在要得出每个产品的购买次数,这个很简单,只需要根据产品id分组即可:
select product_id 产品,count(1) 购买次数, from `order` group by product_id;
但是现在有个需求,就是要在『购买次数』后面再加上一列,要得出这个产品的『购买人数』。
『购买次数』和『购买人数』并不同,比如一个产品被购买了10次,但是都是被同一个用户购买,那么购买人数就为1.
select product_id 产品,count(1) 购买次数, count(distinct user_id) 购买人数 from `order` group by product_id;