IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> group by 去重处理数据 -> 正文阅读

[大数据]group by 去重处理数据

1.




# 需求:结果:
# + ----+------+
# | name|boy_id|
# + ----+------+
# | A   |1     |
# | B   |2     |
# | C   |3     |
# + ----+------+

#  group by 对结果的重复数据去重
select  * from girl ;

# +--+----+------+
# |id|name|boy_id|
# +--+----+------+
# |1 |A   |1     |
# |2 |B   |2     |
# |3 |C   |3     |
# |4 |C   |3     |
# |5 |C   |3     |
# +--+----+------+



select  name ,boy_id  from girl group by name ,boy_id ;

# +----+------+
# |name|boy_id|
# +----+------+
# |A   |1     |
# |B   |2     |
# |C   |3     |
# +----+------+


# 进阶版本:

select  * from boy  ;

# +--+----+--------+
# |id|name|del_flag|
# +--+----+--------+
# |1 |慕容皝 |0       |
# |2 |慕容垂 |0       |
# |3 |慕容博 |1       |
# |4 |慕容复 |1       |
# +--+----+--------+

select  * from girl ;

# +--+----+------+
# |id|name|boy_id|
# +--+----+------+
# |1 |A   |1     |
# |2 |B   |2     |
# |3 |C   |3     |
# |4 |C   |3     |
# |5 |C   |3     |
# |6 |D   |NULL  |
# +--+----+------+

# 需求:  统计每个女生是否真正有男友的情况(假设女生姓名唯一;boy_id 为 3 的男生 已经 被 删掉了,认为 c 没有男友 ),并且去重,结果数据如下:

# +  ----+------+
# |  name|boy_id| flag
# +  ----+------+
# |  A   |1     |  0
# |  B   |2     |  0
# |  C   |3     |  0
# |  D   |NULL  |  0
# +  ----+------+


select name,
       boy_id ,
       case
           when (select count(1) from boy where boy.id  = girl.boy_id and boy.del_flag = 0 ) > 0
               then  1
           else
               0
        end as flag
from girl;
# 结果如下:
# +----+------+----+
# |name|boy_id|flag|
# +----+------+----+
# |A   |1     |1   |
# |B   |2     |1   |
# |C   |3     |0   |
# |C   |3     |0   |
# |C   |3     |0   |
# |D   |NULL  |0   |
# +----+------+----+

#  用户c 的boy_id 都是 3 ,所以分组思路有两个 ① 对元数据进行分组  ② 对 结果数据进行分组

# ① 对元数据进行分组

select name,
       boy_id ,
       case
           when (select count(1) from boy where boy.id  = Tem.boy_id and boy.del_flag = 0 ) > 0
               then  1
           else
               0
        end as flag
from (select  name,boy_id from girl group by name,boy_id ) Tem group by   name ,boy_id ,flag ;

# +----+------+----+
# |name|boy_id|flag|
# +----+------+----+
# |A   |1     |1   |
# |B   |2     |1   |
# |C   |3     |0   |
# |D   |NULL  |0   |
# +----+------+----+




# ② 对 结果数据进行分组

select name,
       boy_id ,
       case
           when (select count(1) from boy where boy.id  = girl.boy_id and boy.del_flag = 0 ) > 0
               then  1
           else
               0
        end as flag
from girl group by   name ,boy_id ,flag ;

# +----+------+----+
# |name|boy_id|flag|
# +----+------+----+
# |A   |1     |1   |
# |B   |2     |1   |
# |C   |3     |0   |
# |D   |NULL  |0   |
# +----+------+----+


  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:37:48  更:2022-03-24 00:39:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:50:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码