大数据面试SQL(七):累加刚好超过各省GDP40%的地市名称

news2024/9/24 8:31:06

82da43a8182445afbdb386dd2b908935.jpeg

文章目录

累加刚好超过各省GDP40%的地市名称

一、题目

二、分析

三、SQL实战

四、样例数据参考


累加刚好超过各省GDP40%的地市名称

一、题目

现有各省地级市的gdp数据,求从高到低累加刚好超过各省GDP40%的地市名称,临界地市也需要。 例如:

  • 浙江省的杭州24% 宁波 20% ,杭州+宁波=44% 大于40% 取出杭州、宁波
  • 江苏省的苏州19% 南京 14% 无锡 12%,苏州+南京=33% ,苏州+南京+无锡=45%,取出 苏州、南京、无锡

样例数据: 

12ca596d556940df9ca78a749ef62405.png

目标结果:

56c388ba370c42f4ae4c1fab9f85ad9c.png

二、分析

1、考察的是聚合函数开窗、聚合函数开窗时使用order by 进行累积求和。

2、要求包含临界地市,这里属于技巧的考察,这种使用补集的方式计算。

维度评分
题目难度⭐️⭐️⭐️⭐️
题目清晰度⭐️⭐️⭐️⭐️⭐️
业务常见度⭐️⭐️⭐️⭐️⭐️

三、SQL实战

1、计算每个城市占比,累积占比。

使用sum()开窗计算每个城市的gdp总额,以及使用sum()over(order by )计算累积占比。

查询语句:

select prov,
       city,
       gdp_amt,
       total_gpd_amt,
       ord_sum_gdp_amt,
       round(gdp_amt / total_gpd_amt,2) as city_percnt,
       round(ord_sum_gdp_amt / total_gpd_amt,2) as lj_city_percent
from (select prov,
             city,
             gdp_amt,
             sum(gdp_amt) over (partition by prov)                       as total_gpd_amt,
              sum(gdp_amt) over (partition by prov order by gdp_amt desc) as ord_sum_gdp_amt
      from t1_gdp) t;

查询结果:

73ab364b124041229230be186778b19f.png

2、求各省地市累积求和>40%的记录。

由于要求包含临界值,直接求取十分不方便,所以我们改变策略,gdp从低到高累加求和,求取累加求和 小于60% 的数据。

查询语句:

select prov,
       city,
       gdp_amt,
       total_gpd_amt,
       ord_sum_gdp_amt,
       round(gdp_amt / total_gpd_amt,2) as city_percnt,
       round(ord_sum_gdp_amt / total_gpd_amt,2) as lj_city_percent
from (select prov,
             city,
             gdp_amt,
             sum(gdp_amt) over (partition by prov)                       as total_gpd_amt,
              sum(gdp_amt) over (partition by prov order by gdp_amt asc) as ord_sum_gdp_amt
      from t1_gdp) t
where round(ord_sum_gdp_amt / total_gpd_amt,2) <0.6;

查询结果:

76383c900aa046f8afc7a67f6c71ea49.png

3、求补集,得到最后结果。

使用各省市全量数据,计算出不在上述结果的数据,即目标结果。

查询语句:

select t1.prov,
       t1.city
from t1_gdp t1
         left join
     (select prov,
             city,
             gdp_amt,
             total_gpd_amt,
             ord_sum_gdp_amt,
             round(gdp_amt / total_gpd_amt, 2)         as city_percnt,
             round(ord_sum_gdp_amt / total_gpd_amt, 2) as lj_city_percent
      from (select prov,
                   city,
                   gdp_amt,
                   sum(gdp_amt) over (partition by prov)                      as total_gpd_amt,
                    sum(gdp_amt) over (partition by prov order by gdp_amt asc) as ord_sum_gdp_amt
            from t1_gdp) t
      where round(ord_sum_gdp_amt / total_gpd_amt, 2) < 0.6) tt
     on t1.prov = tt.prov
         and t1.city = tt.city
where tt.city is null;

查询结果:

b80819b67efc4fc1a91306b2eb772170.png

四、样例数据参考

--建表语句
CREATE TABLE t1_gdp (
   prov string COMMENT '省份',
   city string COMMENT '城市',
   gdp_amt decimal(10,2) comment  'GDP'
) COMMENT '各省地市GDP';
--插入数据
insert  into t1_gdp(prov,city,gdp_amt)
values
    ('浙江','杭州',20059),
    ('浙江','宁波',16452.8),
    ('浙江','温州',8730.6),
    ('浙江','绍兴',7791),
    ('浙江','嘉兴',7062.45),
    ('浙江','台州',6240.68),
    ('浙江','金华',6011.27),
    ('浙江','湖州',4015.1),
    ('浙江','衢州',2125.2),
    ('浙江','舟山',2100.8),
    ('浙江','丽水',1964.4),
    ('江苏','苏州',24653.37),
    ('江苏','南京',17421.4),
    ('江苏','无锡',15456.19),
    ('江苏','南通',11813.27),
    ('江苏','常州',10116.36),
    ('江苏','徐州',8900.44),
    ('江苏','扬州',7423.26),
    ('江苏','盐城',7403.87),
    ('江苏','泰州',6731.66),
    ('江苏','镇江',5264.07),
    ('江苏','淮安',5015.06),
    ('江苏','宿迁',4398.07),
    ('江苏','连云港',4363.61);

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2033782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式-延迟加载(Lazy Load)

概念 一个对象&#xff0c;它虽然不包含所需要的所有数据&#xff0c;但是知道怎么获取这些数据。 加载一个对象会引起大量相关对象的加载&#xff0c;这样会损害系统的性能。延迟加载会暂时终止这个加载过程。 运行机制 四种实现延迟加载的方法&#xff1a; 延迟初始化&am…

ThreadLocal —— 让每个线程拥有自己的变量副本

在多线程编程中&#xff0c;数据共享是一个常见的话题。很多时候我们需要多个线程共享同一个数据&#xff0c;以实现数据的一致性和通信。然而&#xff0c;在一些场景下&#xff0c;我们并不希望数据被多个线程共享&#xff0c;而是希望每个线程都拥有自己独立的一份数据。这时…

【C++类和对象(中)】—— 我与C++的不解之缘(四)

前言&#xff1a; 接下来进行类和对象中的学习&#xff0c;了解类和对象的默认成员函数 一、类和对象默认成员函数 默认成员函数就是用户没有显示实现&#xff0c;编译器会自动生成的成员函数。 一个类&#xff0c;我们不显示实现的情况下&#xff0c;编译器就会默认生成一下留…

无人机开启农林植保新篇章

嘿&#xff0c;小伙伴们&#xff0c;你们知道吗&#xff1f;无人机已经悄悄在农业领域大展拳脚&#xff0c;成为现代农业的“黑科技”新宠儿啦&#xff01; 想象一下&#xff0c;广袤的田野上空&#xff0c;无人机如同勤劳的蜜蜂&#xff0c;精准高效地完成着各项任务&#xff…

unity 使用 compute shader的步骤

这里详细的记载使用步骤&#xff0c;我这个例子是让一个立方体上下不停的动 创建一个compute shader 一个普通shader 一个材质 一个C# 先挨个写上类容 这里kernel 指定main函数入口&#xff0c;RWStructuredBuffer就是数组&#xff0c;具体size是在外部指定的&#xff0c;可能…

C#使用CEFSharp获取动态网页源码

CEF 全称是Chromium Embedded Framework&#xff08;Chromium嵌入式框架&#xff09;&#xff0c;是个基于Google Chromium项目的开源Web browser控件&#xff0c;支持Windows, Linux, Mac平台。CEFSharp就是CEF的C#移植版本。 访问以下链接可以获取CEF的详细介绍 chromiumem…

c++版opencv长文指南

c版opencv长文指南 1、配置opencv库1.1 下载1.2 配置1.2.1 配置包含目录1.2.2 配置库含目录1.2.3 配置链接器1.2.4 配置系统环境变量 2、学习路线3、入门知识3.1 图像读取与显示3.2 图像色彩空间转换3.2 图像对象的创建与赋值3.2.1 图像对象的创建3.2.2 图像对象的赋值 3.3 图像…

轻松搞定小程序生成短链接/二维码,你学会了吗?

朋友们&#xff0c;大家有没有遇到过这样的困扰&#xff1a;小程序由于不是链接&#xff0c;在短信或者其他平台里根本没法推广&#xff0c;导致小程序的用户量很难涨起来。 那小程序转成链接真的就没办法实现吗&#xff1f;当然不是&#xff01; 现在有一款超实用的工具——…

zigbee笔记:十、ZStack(2.3.0-1.4.0)的OSAL使用分析

zigbee笔记&#xff1a;九中&#xff0c;我们已经学会了利用模板&#xff0c;定制自己的个性开发工程&#xff0c;本文为协议栈&#xff08;ZStack-CC2530-2.3.0-1.4.0&#xff09;代码使用分析笔记&#xff0c;来进一步掌握协议栈的使用。 一、协议栈使用知识点 1、协调器、路…

python从入门到精通:基础语法讲解

1、字面量 字面量&#xff1a;在代码中&#xff0c;被写下来的固定的值&#xff0c;称之为字面量。 python中常用的几种数据类型&#xff1a; 类型描述说明数字&#xff08;Number&#xff09; 整数&#xff08;int&#xff09; 浮点数&#xff08;float&#xff09; 复数&a…

Graph-Cot:图上迭代推理

Graph-Cot&#xff1a;图上迭代推理 提出背景GRAPH-COT 对比 MindMapGRAPH-COT 和 MindMap 多链推理方法结合案例一&#xff1a;复杂症状的诊断案例二&#xff1a;罕见病的诊断案例三&#xff1a;治疗方案的制定 解法拆解目的问题解法 GRAPH-COT 医学问诊 论文&#xff1a;http…

(BO)Bayes-CNN多变量时序预测 基于贝叶斯算法-卷积神经网络多变量时序预测(多输入单输出)Matlab代码

Bayes-CNN多变量时序预测 基于贝叶斯算法-卷积神经网络多变量时序预测&#xff08;多输入单输出&#xff09;Matlab代码 程序已经调试好&#xff0c;无需更改代码替换数据集即可运行&#xff01;&#xff01;&#xff01;数据格式为excel&#xff01;(如下) 需要其他的都可以…

CSS3下拉菜单实现

导航菜单&#xff1a; <nav class"multi_drop_menu"><!-- 一级开始 --><ul><li><a href"#">Power</a></li><li><a href"#">Money</a></li><li><a href"#"…

【数模修炼之旅】02 多目标规划 深度解析(教程+代码)

【数模修炼之旅】02 多目标规划 深度解析&#xff08;教程代码&#xff09; 接下来 C君将会用至少30个小节来为大家深度解析数模领域常用的算法&#xff0c;大家可以关注这个专栏&#xff0c;持续学习哦&#xff0c;对于大家的能力提高会有极大的帮助。 1 多目标规划介绍及应…

百度智能云发布3款轻量级+2款场景大模型

文心大模型ERNIE 3.5是目前百度智能云千帆大模型平台上最受欢迎的基础大模型之一。针对用户的常见通用的对话场景&#xff0c;ERNIE 3.5 在指令遵循、上下文学习和逻辑推理能力三方面分别进行了能力增强。 ERNIE Speed作为三款轻量级大模型中的“大个子”&#xff0c;推理场景…

解决连接不上Linux和服务器中的Nacos(Windows中能连接但是Linux中却不行)

报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNKNOWN: Uncaught exception in the SynchronizationContext. Re-thrown. at com.alibaba.nacos.shaded.io.grpc.Status.asRuntimeException(Status.jav 2024-08-13T10:21:52.93708:00 ERROR 27764 --- …

ArduPilot开源代码之FMU+IOMCU设计

ArduPilot开源代码之FMUIOMCU设计 1. 源由2. 设计概念3. FMU & IOMCU特点3.1 FMU&#xff08;Flight Management Unit&#xff09;的主要功能3.2 IOMCU&#xff08;Input/Output Microcontroller Unit&#xff09;的主要功能3.3 主要差异 4. 主/辅助(MAIN/AUX) PWM输出5. 软…

【北京仁爱堂】痉挛性斜颈的早期症状,你了解吗?

在日常生活中&#xff0c;您可能很少听到“痉挛性斜颈”这个名词&#xff0c;但它却是一种不容忽视的疾病。今天&#xff0c;就让我们一起来了解一下痉挛性斜颈的早期症状&#xff0c;以便能够及时发现并采取相应的措施。 痉挛性斜颈是一种局限性肌张力障碍疾病&#xff0c;主要…

Gitlab搭建服务器好做吗 Gitlab搭建服务器操作指南

GitLab是一个强大的开源代码托管和CI/CD工具&#xff0c;广泛用于软件开发的版本控制和自动化构建。对于许多公司和开发团队来说&#xff0c;自行搭建GitLab服务器是一个既具挑战性又有很多好处的选择。本文将详细讨论搭建GitLab服务器的难易程度&#xff0c;提供一份详尽的操作…

死信队列.

“死信”是指在RabbitMQ中那些因为某些原因无法被正常处理的消息。