ClickHouse--17--argMin() 和argMax()函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • argMin() 和argMax()函数
  • 业务场景使用案例
    • 1.准备表和数据:
    • 业务场景一:查看salary 最高和最小的user
    • 业务场景二:根据更新时间获取最新/最早记录
    • 业务场景三:获取user工资变化详情
    • 注意


argMin() 和argMax()函数

argMax(arg ,val):计算 ‘arg’ 最大值 ‘val’ 价值。 如果有几个不同的值 ‘arg’ 对于最大值 ‘val’,遇到的第一个值是输出。

argMin() 与argMax() 的功能正好是相反的,👇是Clickhouse官方文档对这个函数的解释,看官应该看知道这个函数是用途了吧。

在这里插入图片描述

业务场景使用案例

1.准备表和数据:

 1 drop table if exists salary;
 2  create table salary
 3 (
 4     `id` Int32,
 5     `user` String,
 6     `user_id` Int32,
 7     `salary` Int32 ,
 8     `created_at` Datetime ,
 9     `updated_at` Datetime
10 ) engine = Memory;
11 
12 select * from salary;
13
14 insert into salary (id,user,user_id,salary,created_at,updated_at) Values
15 (1,'Jim',101,10000,'2020-05-01 00:00:00','2020-05-01 00:00:00'),
16 (2,'Tom',102,15000,'2020-05-01 01:00:00','2020-05-01 00:00:00'),
17 (3,'Tony',103,20000,'2020-05-01 00:00:00','2020-05-01 00:00:00'),
18 (4,'Judy',104,25000,'2020-05-01 00:00:00','2020-05-01 00:00:00'),
19 (5,'Lucy',105,80000,'2020-05-01 00:00:00','2020-05-01 00:00:00'),
20 
21 select * from salary;

在这里插入图片描述

业务场景一:查看salary 最高和最小的user

 select 'Max Salary User' as Type ,argMax(user,salary)  as user from salary
 UNION ALL
 select 'Min Salary User' as Type, argMin(user,salary)  as user from salar

在这里插入图片描述

业务场景二:根据更新时间获取最新/最早记录

这两个函数可以应用到数据updated 上,非常好用,比如user_id = 101 的salary 数据updated 了,数据产生了一条新的记录;

我们可以根据updated_at的时间拿到每个用户一段时间内数据的最新记录或者最早记录

1   insert into salary (id,user,user_id,salary,created_at,updated_at) Values
2   (1,'Jim',101,15000,'2020-05-02 00:00:00','2020-05-02 00:00:00');
3 
4  select * from  salary;

在这里插入图片描述
argMax查看user最新记录:

 select
        id,
        argMax(user,updated_at) as user,
        argMax(user_id,updated_at) as user_id,
        argMax(salary,updated_at) as salary,
        argMax(created_at,updated_at) as created_at
  from salary
  group by id
  order by id asc;

最新记录👇:我们通过结果可以看到user =Jim,是工资有调整了,最开始的时候salary = 10000,目前的salary = 15000,通过argMax() 取到最新的记录,这个函数间接的实现了数据的updated 的功能,clickhouse 既可以查看历史的所有数据,又可以很好的查看最新的数据。

在这里插入图片描述
argMin()查看user最早记录:

  select
         id,
         argMin(user,updated_at) as user,
         argMin(user_id,updated_at) as user_id,
         argMin(salary,updated_at) as salary,
         argMin(created_at,updated_at) as created_at
  from salary
  group by id
  order by id asc;

在这里插入图片描述

业务场景三:获取user工资变化详情

想知道公司每个user 的最早期的工资和目前的薪资,以及涨幅和变化情况,根据员工表现合理安排员工的福利:

1  select user_id,
2        argMax(user,updated_at) as user,
3         argMin(salary,updated_at) as history_salary,
4         argMax(salary,updated_at) as lasted_salary,
5         argMax(salary,updated_at) - argMin(salary,updated_at) as difference,
6         (argMax(salary,updated_at) - argMin(salary,updated_at)) / argMin(salary,updated_at) as "The percentage of difference"
7  from salary
8  group by user_id;

在这里插入图片描述

注意

需要注意的是argMax() ,argMin() 函数的时候,如果有用上where 条件的时候,就要优先去一段时间范围的数据,然后嵌套后再做Where 条件的过滤哦;否则你符合你where过滤的条件的数据,不一定是最新的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++11 数据结构0 什么是 “数据结构“?数据,数据对象,数据元素,数据项 概念。算法的基本概念 和 算法的度量,大O表示法,空间换时间的代码

数据: 是能输入计算机且能被计算机处理的各种符号的集合。数值型的数据:整数和实数。非数值型的数据:文字、图像、图形、声音等。 数据对象: 性质相同的 "数据元素" 的集合 例如一个 int arr[10], Teacher tea[3]; 数…

C++设计模式:单例模式(十)

1、单例设计模式 单例设计模式,使用的频率比较高,整个项目中某个特殊的类对象只能创建一个 并且该类只对外暴露一个public方法用来获得这个对象。 单例设计模式又分懒汉式和饿汉式,同时对于懒汉式在多线程并发的情况下存在线程安全问题 饿汉…

每日OJ题_BFS解决FloodFill②_力扣200. 岛屿数量

目录 力扣200. 岛屿数量 解析代码 力扣200. 岛屿数量 200. 岛屿数量 难度 中等 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方…

layui中对table表格内容鼠标移入显示 tips内容

要在Layui中的表格中实现鼠标移入显示Tips,你可以使用Layui的事件监听和Tips组件。 有两种实现方式! 第一种是,通过自定义鼠标事件显示 tips。在渲染 table 时,对 filed 进行重构,增加相应的选择器标识,一…

OneForAll安装使用

OneForAll简介 OneForAll是一款功能强大的子域收集工具 原项目地址:GitHub - shmilylty/OneForAll: OneForAll是一款功能强大的子域收集工具 gitee项目地址:OneForAll: OneForAll是一款功能强大的子域收集工具 # 安装Python Windows系统安装python参…

Excel文本内容抽取工具[Python]

#创作灵感# 一堆Excel文件,每个打开看太累了。写个脚本直接显示里面的内容多好。最好这些内容可以直接复制到剪切板,方便以后编辑修改。只需要将文件拖动到全屏置顶的文本框内,就能弹出Excel里的内容。支持一次选取多个文件。 开干&#xff…

react17+18 中 setState是同步还是异步更新

在类组件中使用setState,在函数式组件中使用hooks的useState。 setstate目录 1. 类组件1.1 react 17版本1.2 react 18版本 2、函数式组件 1. 类组件 1.1 react 17版本 参考内容:第十一篇:setState 到底是同步的,还是异步的&…

Unity类银河恶魔城学习记录12-8 p130 Skill Tree UI源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI.cs using UnityEngine;public class UI : MonoBehaviour {[SerializeFi…

【精选】发布应用到应用商店的基本介

摘要 本文旨在介绍如何在各大应用商店发布应用,包括市场选择、准备材料、上架步骤以及常见被拒原因及解决方法。通过详细的步骤和经验分享,帮助开发者顺利将应用推向市场。 引言 随着移动应用市场的不断发展,越来越多的开发者希望将他们的…

C++类和对象上

C和C语言本质区别 C语言是面向过程的,面向过程的,分析出求解问题的步骤,然后逐步通过函数调用来逐步解决问题。 C在分析问题是在面对对象的基础上来实现的,即将一件事情拆分为不同的对象,靠的是对象之间的交互来完成的…

OSPF数据报文格式

OSPF协议是跨层封装的协议,跨四层封装,直接将应用层的数据封装在网络层协议后面,IP协议包中协议号字段对应的数值为——89 OSPF的头部信息: ——所有数据包公有的信息 版本:OSPF版本 在IPV4中一般使用OSPFV2&#xf…

c 解数独(通用方法,适用于9×9 数独)

折腾了一周时间,终于搞定99数独通用方法 思路:1.生成每行空位的值,也就是1-9中除去非0的数。 2.用行,列,宫判断每行中每个空位的最小取值范围后再重新生成每行。 3.随机提取生成的9行,判断每列之和是否等…

找不到vcruntime140.dll怎么办,vcruntime140.dll丢失的多种解决方法

在我们日常频繁地与电脑打交道、依赖其处理各种工作、学习乃至娱乐任务的过程中,偶尔会遭遇一些令人困扰的技术问题。其中一种颇为常见的情况便是,当您正全神贯注于某个重要应用的操作,或是满怀期待地试图启动一款新安装的游戏时,…

2万亿训练数据!Stable LM 2-12B加入开源队列

公*众*号:AI疯人院 4月9日,知名大型模型开源平台Stability.ai在其官网上发布了全新的类ChatGPT模型——Stable LM 2 12B。 据了解,Stable LM 2 12B模型拥有120亿个参数,其训练数据涵盖了英语、西班牙语、德语等7种语言的2万亿个…

C++修炼之路之string--标准库中的string

目录 前言 一:标准库的string类简介 1.string是basic_string的一份char类型的类模板 2.basic_string类模板的分类 3.string是表示字符串的字符串类 4.在使用string类时要添加头文件#include 二:string类的常用接口(只介绍常用的) 1.构造析构赋…

今日arXiv最热大模型论文:Dataverse,针对大模型的开源ETL工具,数据清洗不再难!

引言:大数据时代下的ETL挑战 随着大数据时代的到来,数据处理的规模和复杂性不断增加,尤其是在大语言模型(LLMs)的开发中,对海量数据的需求呈指数级增长。这种所谓的“规模化法则”表明,LLM的性…

ETLCloud结合kafka的数据集成

一、ETLCloud中实时数据集成的使用 在ETLCloud中数据集成有两种方式,一种是离线数据集成,另一种便是我们今天所要介绍的实时数据集成了,两者的区别从名字便可以得知,前者处理的数据是离线的没有时效性的,后者的数据是…

常见的解析漏洞总结

文件解析漏洞 文件解析漏洞主要由于网站管理员操作不当或者 Web 服务器自身的漏洞,导致一些特殊文件被 IIS、apache、nginx 或其他 Web服务器在某种情况下解释成脚本文件执行。 比如网站管理员配置不当,导致php2、phtml、ascx等等这些文件也被当成脚本文…

【VScode】同时编辑多处

【VScode】同时编辑多处 1. 多光标自定义批量编辑2. 选择多个,同时操作(批量选中局部匹配项)3. 取消选择4. 在不移动光标的情况下滚动屏幕5. 批量选中全局匹配项6.重点6.1 通过上下键选择多行6.2 同时选中所有行的末尾6.3 选中多列另一种方式6.4 通过正则的方式配置…

显示学习4(基于树莓派Pico) -- 游戏

来自:https://github.com/zelacerda/micropython 代码改造了一下,让它可以跑起来。 简单分析一下代码。外层是一个死循环,有一个状态机来对应不同的场景。 def loop():while True:if state 0: splash_screen()elif state 1: game_waiti…