首页 > 数据库 >使用SQL 统计表最大值,最小值,平均值,中位数值

使用SQL 统计表最大值,最小值,平均值,中位数值

时间:2023-08-07 09:44:44浏览次数:37  
标签:handle update SQL 中位数 strategy time duration GROUP 统计表

问:有一个postgres数据表,表中有update_time, create_time关于时间戳的字段,选择某个时间段,计算出update_time减去create_time的值做为耗时时间的字段duration_time,统计出在这段时间内耗时时间的平均值,中位数值,最大值,和最小值,请问如何通过sql语句实现此统计?

  • 答:您好!您可以使用以下SQL语句来实现您所描述的统计:

    SELECT AVG(duration_time) AS avg_duration, 
           PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY duration_time) AS median_duration, 
           MAX(duration_time) AS max_duration, 
           MIN(duration_time) AS min_duration
    FROM (
        SELECT update_time - create_time AS duration_time
        FROM your_table_name
        WHERE update_time BETWEEN start_time AND end_time
    ) subquery;
    

    请注意,您需要将 your_table_name 替换为您的表名,start_timeend_time 替换为您想要查询的时间段。希望这对您有帮助!

表中还有另一个字段处置策略字段为handle_strategy, 按照handle_strategy分组 统计,如何改写上面的查询?

  • 您好!如果您想按照 handle_strategy 字段分组统计,可以使用以下SQL语句:

    SELECT handle_strategy, 
           AVG(duration_time) AS avg_duration, 
           PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY duration_time) AS median_duration, 
           MAX(duration_time) AS max_duration, 
           MIN(duration_time) AS min_duration
    FROM (
        SELECT handle_strategy, update_time - create_time AS duration_time
        FROM your_table_name
        WHERE update_time BETWEEN start_time AND end_time
    ) subquery
    GROUP BY handle_strategy;
    

    请注意,您需要将 your_table_name 替换为您的表名,start_timeend_time 替换为您想要查询的时间段。希望这对您有帮助!

平均数统计保留到整数位,不需要小数; 上面PERCENTILE_CONT(0.5) WITHIN GROUP语句表示的是什么意思?

  • 您好!如果您想将平均数统计保留到整数位,可以使用 ROUND 函数来实现。以下是修改后的SQL语句:

    SELECT handle_strategy, 
           ROUND(AVG(duration_time)) AS avg_duration, 
           PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY duration_time) AS median_duration, 
           MAX(duration_time) AS max_duration, 
           MIN(duration_time) AS min_duration
    FROM (
        SELECT handle_strategy, update_time - create_time AS duration_time
        FROM your_table_name
        WHERE update_time BETWEEN start_time AND end_time
    ) subquery
    GROUP BY handle_strategy;
    

    至于您问的 PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY duration_time) 语句,它表示计算 duration_time 字段的中位数。PERCENTILE_CONT 是一个聚合函数,它用于计算连续分布的给定百分位数。在这里,我们使用 0.5 作为参数,表示我们想要计算中位数(即第50百分位数)。WITHIN GROUP (ORDER BY duration_time) 子句用于指定对哪个字段进行排序以计算百分位数。

    希望这些信息对您有帮助!

标签:handle,update,SQL,中位数,strategy,time,duration,GROUP,统计表
From: https://www.cnblogs.com/failymao/p/17610661.html

相关文章

  • mysql突然断电,无法启动问题, redo log 无法恢复 mysqld启动不了 Plugin 'InnoDB' init
    环境:CentOS7.x、MySQL5.7其实造成这种问题的原因有很多种,但是不管是什么问题,最终的原因一般是redolog造成的问题。为什么说是redolog造成的呢,因为redolog对应的文件就是两个ib_logfile开头的文件:ib_logfile0、ib_logfile1;下面的问题都是和ib_logfile有关。MySQL......
  • Linux下轻松修改MySQL/MariaDB的Root密码
    如果你是第一次安装MySQL或MariaDB,你可以执行mysql_secure_installation 脚本来实现基本的安全设置。其中的一个设置是数据库的root密码——该密码必须保密,并且只在必要的时候使用。如果你需要修改它(例如,当数据库管理员换了人——或者被解雇了!)。修改MySQL或......
  • mysql基础
    数据库:showdatabases;显示本地数据库selectdatabase();查询当前使用的数据库useinformation_schema;选择使用哪个数据库createdatabasemydb新建数据库dropdatabasemydb删除数据库表:usemydb;showtables;查看该数据库中多少表describechengji查看表结构dropt......
  • 【MySQL入门到精通-黑马程序员】MySQL基础篇-概述及MySQL环境配置
    前言本专栏文章为观看黑马程序员《MySQL入门到精通》所做笔记,课程地址在这。如有侵权,立即删除。一、MySQL概述1.1数据库相关概念数据库(DataBase(DB)):存储数据的仓库,数据是有组织的进行存储。数据库管理系统(DataBaseManagementSystem(DBMS)):操纵和管理数据库的大型软件。SQL(StructureQ......
  • Postgres 和 MySQL 应该怎么选?
    当选择数据库系统时,PostgreSQL和MySQL是两个常见的选择。它们都是开源关系数据库管理系统,具有不同的特点和优势。在这篇文章中,我将详细比较PostgreSQL和MySQL,以帮助您做出决策。一、背景和社区支持PostgreSQL是一个由PostgreSQL全球发展集团(一个全球性的开源数据库项目)开......
  • MySQL的关键指标及采集方法
    MySQL是个服务,所以我们可以借用Google四个黄金指标的思路来解决问题。1、延迟应用程序会向MySQL发起SELECT、UPDATE等操作,处理这些请求花费了多久,是非常关键的,甚至我们还想知道具体是哪个SQL最慢,这样就可以有针对性地调优。在客户端埋点。即上层业务程序在请求MySQL的时......
  • PostgreSQL-unlogged table
    PostgreSQL中,有一种表的类型为unloggedtable,该种类型的表不会写入wal日志中,所以在写入的速度上比普通的堆表快很多,但是该表在数据库崩溃的时候,会被truncate,数据会丢失,而且该表也不支持流复制,所以在standby节点是无法查到该表数据的。在该表上创建的索引也是unlogged索引。创建un......
  • 通过StreamSets实现SQLServer实时更新数据至ElasticSearch
    前言  网上许多关于StreamSets增量更新的教程几乎都是单单INSERT操作,这使得目标数据库会出现重复数据,而实际需求上我们往往更多是需要INSERT加UPDATE操作,利用SQLServer的TIMESTAMP(时间戳)特性,可以很容易实现这一点。源数据库配置  需要明白一点,在SQLServer中的TIMESTAMP......
  • mysql连接的时候,null, message from server: “Host ‘xx.xx.xx.xx‘ is not allowed
    连接mysql的时候,提示“null,messagefromserver:“Host‘xx.xx.xx.xx‘isnotallowedtoconnecttothisMySQLserver“”解决出现这个提示,是由于我们使用root用户登录时,没有给root用户设置能访问的机器,所以我们设置一下,就可以了。第一步:登录mysql:输入 mysql-uroot......
  • Java8时间与Mysql时间
    对应版本Java8里面新出来了一些API,LocalDate、LocalTime、LocalDateTime非常好用如果想要在JDBC中,使用Java8的日期LocalDate、LocalDateTime,则必须要求数据库驱动的版本不能低于4.2上面说了,数据库驱动的版本不能低于4.2,如何判断呢?直接打开数据库驱动jar,里面有个META-INF/MA......