首页 > 数据库 >mysql列转行

mysql列转行

时间:2023-02-15 17:44:19浏览次数:42  
标签:02 index uv pv 转行 mysql 2023 id

背景

  • 需要将原子数据表的数据同步到结果表

  • 原子数据表:base_index

    date_time index_id value
    2023-01 pv 100
    2023-01 uv 200
    2023-01 newUser 300
    2023-02 pv 400
    2023-02 uv 500
    2023-02 newUser 600
  • 结果表:result_index

    date_time pv uv newUser
    2023-01 100 200 300
    2023-02 400 500 600

思路

通过联表

  • 将每种index_id筛选出来为一个子表,然后通过对date_time left join的方式,拼接成宽表。这种方式得保证驱动表的时间是完整的,如驱动表的index_id为pv,但是pv只有2023-01没有2023-02,但是uv有2023-02,此时数据有缺失。所以此方案行不通

grouy by

  • group by是先执行非group by部分的select,然后按照group by的字段分组,如果没有聚合函数,往往最后保留每组的第一条数据返回到结果集

  • date_time聚合,然后通过if将不同index_id分别判断,目的扩展成多个不同字段

  • 使用max()聚合函数,等于将每组中每列的最大值提到返回的这条数据中来

    select 
    	max(if(index_id = 'pv', `value`, null)) as pv,
    	max(if(index_id = 'uv', `value`, null)) as uv,
    	max(if(index_id = 'newUser', `value`, null)) as newUser,
    	date_time
    	from base_index
    	group by date_time
    

参考

标签:02,index,uv,pv,转行,mysql,2023,id
From: https://www.cnblogs.com/wftop1/p/17124075.html

相关文章

  • Windows下Python安装MySQLdb
    下载whl列表地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient下载对应的版本,cp含义是CPython,例如:如果Python版本是3.9.11,就选cp39,如果Python版本是2.7.x,则......
  • MySql主从复制介绍
    一、主从复制介绍MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新......
  • MySQL 安装教程
    MySQL安装教程MySQL下载地址:https://downloads.mysql.com/archives/community/这里下载mysql-5.7.28版本的。建议下载压缩包版的,方便卸载~1、解压压缩包,放到环境目录下......
  • mysql 获取当月所有日期列表
    selectdatefrom(SELECTDATE_FORMAT(DATE_SUB(last_day(curdate()),INTERVALxc-1day),'%Y-%m-%d')asdateFROM( SELECT@xi:=@xi+1asxcfrom (SELECT1......
  • mysql 当年所有月份列表
    --不依赖任何表,只是用mysql自带函数方法selectconcat((selectyear(now())),'-01')as`date`unionselectconcat((selectyear(now())),'-02')unionselectconcat((se......
  • MySQL8.0 高可用集群化 · mysql-shell · mysql-router · docker · 单主多从
    高可用集群的基本特点负载均衡/读写分离/故障转移本文以此为目标,利用mysql-shell、mysql-router,基于docker的环境架构(篇幅太长,内容多了点儿)。一、名词及要点......
  • MySQL下创建用户以及对用户进行授权
    创建用户,使用户拥有所有权限CREATEUSER'sonar'@'%'IDENTIFIEDBY'123456';--设置创建的用户名和密码,%表示该用户可以被远程连接,如果只是在本地使用的话可以使用loc......
  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib
    在Kylin服务器上安装好mysql后登录时出现以下问题:查找mysql.sock文件,命令如下:find-namemysql.sock结果如下: 如果文件不存在,mysql.sock丢失,mysqld_safe启动报错......
  • CentOS中使用Dockerfile部署初始化sql文件的mysql
    场景Docker中部署mysql数据库CentOS中使用Dockerfile部署带websocket的SpringBoot的jar包在上面部署Mysql镜像和会使用Dockerfile的基础上。如果要实现定制化一个mysql镜像,......
  • mysql从库延迟检查脚本
    脚本如下:[root@dev-env23scripts]#vicheck_slave_delay.sh#!/bin/bashcheck_time=`date"+%Y-%m-%d,%H:%M:%S"`mysql-hlocalhost-uroot-p123456-e'showsla......