SQL每日一题(2020-05-28)

2020-06-02  本文已影响0人  扎西的德勒

题目:

有如下一张表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 省份, 城市;


附:
题目来源:https://mp.weixin.qq.com/s/M2ul0bC45_tGM1UoYc_g-g

上一篇 下一篇

猜你喜欢

热点阅读