sql_day14(获取各门店的面积)

news2024/9/21 14:38:55

描述:获取各门店的面积

  • 获取各门店的面积

  • 门店面积信息可以从分店面积明细表中获取。

    • 先取实际经营面积(8),

    • 如果取不到(实际经营面积为空)再取经营面积(7)。

    • 如果取不到(经营面积为空)再取合同面积(1)。

    • 如果取不到(合同面积为空)再取外滩面积(2)。

    • 总结一下: 优先级就是 8 > 7 > 1 > 2

输入:

输出:
 

数据准备:

-- 创建门店面积表 tb_store_area
CREATE TABLE tb_store_area (
    store_no     VARCHAR(50),
    area_type_no INT,
    area         INT
);

-- 插入数据到门店面积表 tb_store_area
INSERT INTO tb_store_area (store_no, area_type_no, area) VALUES
('T065', 8, 135),
('T067', 8, 139),
('T065', 7, 157),
('T066', 7, 178),
('T068', 2, 178),
('T065', 1, 158),
('T066', 1, 160),
('T067', 1, 145);

分析:

法一:

①考虑到优先顺序为 8 > 7 > 1 > 2 ,那么就以这样的顺序赋值1,2,3,4

select
    store_no, area_type_no, area,
    case
       when area_type_no=8 then 1
       when area_type_no=7 then 2
       when area_type_no=1 then 3
       when area_type_no=2 then 4
       else 5
    end as type_num
from tb_store_area

②根据这个type_num进行分组排序

select
    store_no, area_type_no, area,
    row_number() over (
        partition by store_no
        order by (case
                       when area_type_no=8 then 1
                       when area_type_no=7 then 2
                       when area_type_no=1 then 3
                       when area_type_no=2 then 4
                       else 5
                   end) asc
    ) as rn
from db_1.tb_store_area

③筛选出rn为1的数据

select store_no, area from t2
where rn=1

法二:

①求出各门店area_8,area_7.area_1,area_2的面积,没有的话显示为0

select
    store_no,
    max(if(area_type_no=8, area, null)) as area_8,
    max(if(area_type_no=7, area, null)) as area_7,
    max(if(area_type_no=1, area, null)) as area_1,
    max(if(area_type_no=2, area, null)) as area_2
from tb_store_area
group by store_no

②使用函数coalesce(area_8, area_7, area_1, area_2) 筛选出各门店第一个不为null的值

select
    store_no,
    coalesce(area_8, area_7, area_1, area_2) as area
from t1

代码:

# 法一
with t2 as (
    select
        store_no, area_type_no, area,
        row_number() over (
            partition by store_no
            order by (case
                           when area_type_no=8 then 1
                           when area_type_no=7 then 2
                           when area_type_no=1 then 3
                           when area_type_no=2 then 4
                           else 5
                       end) asc
        ) as rn
    from db_1.tb_store_area
)
select store_no, area from t2
where rn=1
;

# 法二
with t1 as (
    select
        store_no,
        max(if(area_type_no=8, area, null)) as area_8,
        max(if(area_type_no=7, area, null)) as area_7,
        max(if(area_type_no=1, area, null)) as area_1,
        max(if(area_type_no=2, area, null)) as area_2
    from tb_store_area
    group by store_no
)
select
    store_no,
    coalesce(area_8, area_7, area_1, area_2) as area
from t1
;

总结:

① 通过分组然后根据多个 max(if(area_type_no=n, area, null)) 拼接出各门店的数据,将列变行

②coalesce(列1,列2,...)函数的使用 返回若干列里不为null的第一个值

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

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

相关文章

AI大模型赋能开发者|海云安创始人谢朝海受邀在ISC.AI 2024大会就“大模型在软件开发安全领域的应用”主题发表演讲

近日,ISC.AI 2024 第十二届互联网安全大会在北京国家会议中心盛大开幕。作为全球规格最高、规模最大、影响力最深远的安全峰会之一,本次大会以“打造安全大模型 引领安全行业革命”为主题,聚焦安全与AI两大领域,吸引了众多行业领袖…

您知道Jmeter中Redirect Automatically 和 Follow Redirects的使用场景吗?

相信很多使用过jmeter的同学都没有关注过请求中的Redirect Automatically 和 Follow Redirects选项,如下图: 在 JMeter 中,Redirect Automatically 和 Follow Redirects 是与 HTTP 请求重定向相关的两个选项,它们之间是有很大区别…

Ubuntu小键盘消失,并且安装好搜狗输入法后无法打出中文的问题

Ubuntu右上角的键盘图标不见了_ubuntu虚拟机键盘选项消失了-CSDN博客解决Ubuntu18.04安装好搜狗输入法后无法打出中文的问题_ubuntu18.04 搜狗输入法无法输入中文-CSDN博客 sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2sudo apt instal…

小智常见报表-自由报表

概述 自由报表:具有自由设计、修改、完善的能力的报表。 应用场景 如下图所示,简单展示数据 示例说明 数据准备 在数据面板中添加数据集,可选择Json数据集和API服务数据集。Json数据集输入如下图所示: [{"姓名"…

Keytool:Uniapp 云打包需要生成证书的操作笔记

文章目录 背景操作步骤概述安装 Java 并检测版本生成证书 xxx.keystore问题:报错,没有权限使用证书 背景 我用 uniapp 想要用云打包,但是需要本机生成一个证书 操作步骤概述 安装 Java在终端输入 /usr/libexec/java_home -V 之后&#xff…

2024华为数通HCIP-datacom最新题库(H12-831变题更新⑨)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 如…

【Python学习笔记】序列化

【Python学习笔记】序列化 文章目录 【Python学习笔记】序列化1.python使用pickle序列化数据1.1. 环境准备1.2. 序列化datetime对象1.3. 序列化DataFrame对象1.3.1 json1.3.2 pickle 1.4 序列化list列表 2. flaskweb接口传输序列化数据2.1. bytes形式传输2.1.1. datetime对象2.…

k8s使用kustomize来部署应用

k8s使用kustomize来部署应用 本文主要是讲述kustomzie的基本用法。首先,我们说一下部署文件的目录结构。 ./ ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays└── dev├── kustomization.…

SpringBoot 集成 Sharding-JDBC 实现读写分离、分库分表

文章目录 一、Sharding-JDBC的应用场景二、SpringBoot 集成 Sharding-JDBC2.1、前期准备2.2、导入pom.xml依赖包2.3、结构代码实现2.3.1、MybatisPlusConfig(分页插件)2.3.2、TOrder(订单对象)2.3.3、TOrderMapper(订单…

【论文阅读】Fourier Spectrum Discrepancies in Deep Network Generated Images

文章目录 Learning Self-Consistency for Deepfake Detection背景关键方法傅立叶谱分析图像转换分类实验讨论总结Learning Self-Consistency for Deepfake Detection 会议:NeurIPS 2020 作者: 背景 深度生成模型(GAN、VAE等)能生成与真图无法区分的逼真图像 关键 对…

批发行业进销存-库存预警 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一交互代码 未来之窗_人工智能_VOS通用(数据,库存预警,1080,500);"> 二、通用代码 function 未来之窗_人工智能_VOS通用(网址,标题,宽度,高度){var 机器人默认page网址;var 未来之窗app_通用ID"未来之窗防重复";var title标题;var 机器人宽度宽度;var 机器…

Tensorflow预训练模型转PyTorch

深度学习领域是计算机科学中变化最快的领域之一。大约 5 年前,当我开始研究这个主题时,TensorFlow 被认为是主导框架。如今,大多数研究人员已经转向 PyTorch。 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/…

Opencv学习-窗口交互

交互操作能够增加用户对程序流程的控制,使程序可以根据用户需求实现不同的处理结果。有时某一个参数需要反复尝试不同的数值,这时交互操作可以实现在程序运行过程中改变参数数值的作用,避免重复运行程序,节省时间,同时…

AI智能名片小程序源码在付费媒体与企业营销策略中的创新应用

摘要:在数字化浪潮的推动下,付费媒体已成为企业营销战略的核心组成部分。从视频流媒体平台到社交媒体,企业需不断探索新颖且高效的营销手段以吸引目标受众并促进业务增长。AI智能名片小程序源码,作为融合人工智能、小程序技术与传…

什么是实时数据仓库?它有哪些不可替代之处?

【实时数据仓库】可以分开来理解: ✅【实时数据】:即能够快速处理数据,且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】:可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是:…

Windows 找不到音频输入/输出设备

0.具体现象 系统音量为0,且无法通过任何方式调整。音量表示非静音表示,而是下图这个叉。 1. 解决方案 以Windows 11电脑为例,从搜索框输入【设备管理器】,进入界面如下: 发现一个感叹号的设备【Intel High Defini…

对象与类的一些基本定义与例子(C++)

1.例题要求,设计一个学生类,实例化对象,并且进行赋值 我们通过创建学生的类,给予了学生名字和年龄的两个属性,我们在main函数中创建了学生类的对象s1,通过s1调用了学生类的属性并给予赋值,最后调用学生类打…

Nginx统计PV、NV

目录 PV 分析 UV 分析 在 Nginx 的配置文件中设置 access_log 主要涉及到以下几个方面: 以下是一个基本的 access_log 配置示例: 使用命令行工具对日志进行基本分析: 后端记录 对于 nginx 的 access.log 日志,我们可以根据日…

进程的等待(非阻塞轮询+阻塞)和替换控制详解

引言 在Linux系统中,进程管理是核心功能之一。理解进程的创建、执行和终止是系统编程中的基础。本文将深入探讨Linux中的进程控制机制,包括进程的生命周期、父子进程的交互、以及进程状态的管理 1. 进程创建:fork()函数 在Linux操作系统中…

Prompt万能框架与常用评估指标

引言 在人工智能的飞速发展中,大型语言模型(LLM)已成为研究和应用的热点。LLM以其强大的语言理解和生成能力,在诸如自然语言处理、文本生成、问答系统等多个领域展现出巨大潜力。然而,要充分发挥LLM的能力&#xff0c…