题目:
有如下一张表SaleTypes image 根据客单类别表统计出每个省份每个城市的低客单数和高客单数,如果某城市无低客单记录或高客单记录,其统计数为0 要求:通过一条sql语句得到下列结果 image参考答案:
数据库版本:Server version: 8.0.20 MySQL Community Server - GPL
建表语句
create table dailytest_20200528
(
买家数据 nvarchar(20),
省份 nvarchar(20),
城市 nvarchar(20),
客单类型 nvarchar(20)
);
数据准备
insert into dailytest_20200528 values('张三','湖北','武汉','低客单');
insert into dailytest_20200528 values('李四','湖北','武汉','高客单');
insert into dailytest_20200528 values('王五','湖北','武汉','高客单');
insert into dailytest_20200528 values('赵六','湖南','岳阳','高客单');
insert into dailytest_20200528 values('钱七','湖南','长沙','低客单');
insert into dailytest_20200528 values('孙八','湖南','长沙','低客单');
查询逻辑
SELECT 省份,
城市,
SUM(低客单) AS 低客单,
SUM(高客单) AS 高客单
FROM (
#分组函数语句中,SELECT后的字段必须使用聚合函数或者出现在GROUP BY分组字段中
SELECT 省份,
城市,
CASE WHEN 客单类型 = '低客单' THEN COUNT(客单类型) ELSE 0 END AS 低客单,
CASE WHEN 客单类型 = '高客单' THEN COUNT(客单类型) ELSE 0 END AS 高客单
FROM dailytest_20200528
GROUP BY 省份, 城市, 客单类型) AA
GROUP BY 省份, 城市;
网友评论