• Mysql 横向数据表变纵向数据表


    今天碰到一个有趣的题目,这真熬人啊,脑思路没写注释前,间接性宕机 n次。

    如图:

     看一下,是不是凭借多年(7year+)的经验,是不是很简单?

    真的有那么简单吗?

    是的,就是有那么简单,只是花费了我1.5小时的时间而已,初次接触,确实我实力下降了。

    要不你们先想想答案?

    好了,下面就揭晓答案吧

     

    这答案也没有在实际代码中运行过,也不知道是不是100%正确,如有路见不平拔刀相助 女侠者,日后必有重谢。

    #查找收货人数总数,依据省份为北京的各个城市分类统计收货人数 再通过降序排序 得出表 aa
    #查找省份为北京的各个城市男性收货人数总数,依据省份为北京的各个城市分类, 链接到学员表,且性别为男 的城市分类 收货地址人数总数 得出表 cc
    #查找省份为北京的各个城市女性收货人数总数,依据省份为北京的各个城市分类, 链接到学员表,且性别为女 的城市分类 收货地址人数总数 得出表 dd
    #拼接 cc dd表 且排序为 收货总数 升序排序 得出 ee 表
    #全连接 aa 表 匹配  ee 表,因为aa表已是城市地址总数降序排序,匹配ee表时,优先匹配 排序靠前 城市 得出结果
    select aa.省份,aa.城市,ee.sex,ee.sex_num from
    (
     (select 省份,城市,count(*) as num from 地址表 as a where a.省份='北京' group by 城市 order by num desc ) as aa
    INNER JOIN
    (
    (select  a3.省份,a3.城市,count(*) as sex_num,'男' sex from 地址表 as a3 left join 学员表 as s3 on a3.uid = s3.uid  
    where s3.性别='男' and a3.省份 ='北京') as cc  
    UNION ALL
    (select  a3.省份,a3.城市,count(*) as sex_num,'女' sex from 地址表 as a3 left join 学员表 as s3 on a3.uid = s3.uid  
    where s3.性别='女' and a3.省份 ='北京') as dd order by sex_num asc
    ) as ee
    where aa.城市 = ee.城市);

  • 相关阅读:
    RedisObject
    智能毫米波雷达人体感应器,实时检测静止存在,智能化控制方案
    【算法题】2874. 有序三元组中的最大值 II
    C++对象模型(17)-- 构造函数语义学:成员初始化列表
    中风失语 18 年,AI + 脑机接口帮她「意念发声」
    React框架基础
    2.6一个小工具的使用snipaste
    在UE5中使用OverlayMaterial制作多材质效果
    Microsoft Remote Desktop Mac
    ARM32开发--存储器介绍
  • 原文地址:https://blog.csdn.net/Purgatory001/article/details/125509682