• 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.城市);

  • 相关阅读:
    Java核心技术卷Ⅰ-第一章Java程序设计概述
    橘猫去水印小程序源码(可自定义解析接口、后端使用PHP)
    Docker容器内使用Docker——DinD与DooD
    axios
    Java 线程
    0动态规划中等 LeetCode1014. 最佳观光组合
    json文件批量转为txt文件
    腾讯云新用户优惠活动有哪些可以参加?腾讯云新人服务器优惠活动
    有限元在游乐设施中的应用-焊缝计算
    软件测试刚入职测不出bug怎么办?
  • 原文地址:https://blog.csdn.net/Purgatory001/article/details/125509682