SQL查询语句–统计


-- 1、日统计查询填补 i->为时间差的天数  2022-05-10为终止时间
SET @i :=- 1;
SELECT  date_format( DATE_SUB( '2022-05-10', INTERVAL ( @i := @i + 1 ) DAY ), '%Y-%m-%d' ) AS day
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2 WHERE  @i < 10 ;

SET @i :=- 1;
select x.day,ifnull(visit_pv,0) as visit_pv, ifnull(visit_uv,0) as visit_uv, ifnull(visit_uv_new,0) as visit_uv_new
from  (SELECT  date_format( DATE_SUB( '20220530', INTERVAL ( @i := @i + 1 ) DAY ), '%Y%m%d' ) AS day
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2 WHERE  @i < 30 ) x
left join (select visit_pv, visit_uv, visit_uv_new,ref_date from t_access_trend_daily) d
on x.day = d.ref_date order by x.day;

-- 2、周统计查询填补
SET @i :=- 1;
SELECT  date_format( DATE_SUB( '2022-06-04', INTERVAL ( @i := @i + 7 ) DAY ), '%Y-%m-%d' ) AS week
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2 WHERE  @i < 100 ;

SET @i :=- 1;
select x.time,d.ref_date,ifnull(visit_pv,0) as visit_pv, ifnull(visit_uv,0) as visit_uv, ifnull(visit_uv_new,0) as visit_uv_new
from  (SELECT  date_format( DATE_SUB( '2022-06-04', INTERVAL ( @i := @i + 7 ) DAY ), '%Y-%m-%d' ) AS time
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2 WHERE  @i < 40 ) x
left join (select DATE_FORMAT(DATE_SUB( ref_date, INTERVAL DAYOFWEEK( ref_date )- 1 DAY ),'%Y-%m-%d') as week,CONCAT(DATE_FORMAT(DATE_SUB( ref_date, INTERVAL DAYOFWEEK( ref_date )- 1 DAY ),'%Y%m%d'),"-",DATE_FORMAT(DATE_SUB( ref_date, INTERVAL DAYOFWEEK( ref_date )- 7 DAY ),'%Y%m%d')) as ref_date,sum(visit_pv) visit_pv,sum(visit_uv) visit_uv,sum(visit_uv_new) visit_uv_new FROM t_access_trend_daily WHERE 1 = 1 GROUP BY week ) d
on x.time = d.week ORDER BY x.time;

-- 3、月统计查询填补
SET @i :=- 1;
SELECT  date_format( DATE_SUB( '2022-05-10', INTERVAL ( @i := @i + 1 ) MONTH ), '%Y-%m' ) AS month
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2 WHERE  @i < 5 ;

SET @i :=- 1;
select x.time,ifnull(visit_pv,0) as visit_pv, ifnull(visit_uv,0) as visit_uv, ifnull(visit_uv_new,0) as visit_uv_new
from  (SELECT  date_format( DATE_SUB( '20220630', INTERVAL ( @i := @i + 1 ) MONTH ), '%Y%m' ) AS time
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2 WHERE  @i < 5 ) x
left join (select  DATE_FORMAT(ref_date, '%Y%m') AS month,sum(visit_pv) visit_pv, sum(visit_uv) visit_uv, sum(visit_uv_new) visit_uv_new
from t_access_trend_daily GROUP BY month) d
on x.time = d.month ORDER BY x.time;

-- 4、以某个字段为类型进行统计某个字段的总量
select ref_date,sum(properties_type) as total,
sum(case when user_type = '1' then properties_type end) as total1,
sum(case when user_type = '0' then properties_type end) as total0
from t_user_portrait where 1 = 1 GROUP BY ref_date

-- 5、以某个字段为类型进行统计某个字段的记录数(即多少条)
select ref_date,count(*) as total,
count(case when user_type = '1' then 1 end) as total1,
count(case when user_type = '0' then 1 end) as total0
from t_user_portrait where 1 = 1 GROUP BY ref_date

-- 6、日期格式拼接
select DATE_FORMAT(DATE_SUB( ref_date, INTERVAL DAYOFWEEK( ref_date )- 1 DAY ),'%Y-%m-%d') as week,
CONCAT(DATE_FORMAT(DATE_SUB( ref_date, INTERVAL DAYOFWEEK( ref_date )- 1 DAY ),'%Y%m%d'),"-",
DATE_FORMAT(DATE_SUB( ref_date, INTERVAL DAYOFWEEK( ref_date )- 7 DAY ),'%Y%m%d')) as ref_date,
sum(visit_pv) visit_pv,sum(visit_uv) visit_uv,sum(visit_uv_new) visit_uv_new FROM t_access_trend_daily
WHERE 1 = 1 GROUP BY week

SQL查询语句--统计

SQL查询语句--统计

Original: https://www.cnblogs.com/aadzj/p/16284729.html
Author: 小公羊
Title: SQL查询语句–统计

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/643790/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Maven中pom.xml的packaging类型

    项目的打包类型:pom、jar、war 项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系。项目模块化可以将通用的…

    技术杂谈 2023年6月1日
    098
  • 网站PWA升级

    前面的话 渐进式网络应用 ( Progressive Web Apps ),即我们所熟知的 PWA,是 Google 提出的用前沿的 Web 技术为网页提供 App 般使用体验的一…

    技术杂谈 2023年5月31日
    0109
  • Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识

    Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识 简介 top命令是我们经常用来查看系统信息的一个指令,它提供了一个动态的而且是实时的借口帮助我们去查看系统执行时的进程…

    技术杂谈 2023年7月24日
    084
  • 剑指offer计划28(搜索与回溯算法困难)—java

    1.1、题目1 剑指 Offer 37. 序列化二叉树 1.2、解法 这题给我笑死了,我看到题解有个解法,我愿称之为神。 public class Codec { private …

    技术杂谈 2023年7月25日
    056
  • Eclipse崩溃后无法启动的问题解决

    一次Eclipse发生内存溢出(ADT环境,多打开几个xml文件内存占用就会飚升),强制结束任务,再次启动Eclipse发现闪退。查看workspace/.metadata/.lo…

    技术杂谈 2023年5月30日
    090
  • html大文件分段传输

    总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,ht…

    技术杂谈 2023年5月30日
    0117
  • 评估海外pop点网络质量,批量探测到整个国家运营商ip地址段时延

    61.99.128.0/17 61.99.0.0/16 61.98.96.0/20 61.98.64.0/20 61.98.32.0/19 61.98.128.0/17 61.98…

    技术杂谈 2023年7月25日
    058
  • 初识Java

    ; ; C&C++ Java应运而生 以这样的构想进行编写 语法类似C 没有指针 没有内存管理 可移植性 面向对象 类型安全 高质量的类库 …… 可移植性 …

    技术杂谈 2023年6月21日
    0103
  • Ubuntu常用命令

    Ubuntu(18.04)下更改用户名和主机名 更改主机名字: (1)修改hostname文件 这个文件中的内容是用来显示主机名的,修改这个文件后,立刻重启 (2)修改hosts文…

    技术杂谈 2023年7月11日
    082
  • Flink Time

    基础概念 支持三种时间概念: Processing Time 时间递增 Ingestion Time : 摄入时间,数据进入Flink框架的时间,在Source Operator中…

    技术杂谈 2023年7月10日
    064
  • 记:大学同学的婚礼邀约

    晚上在家上网课的时候,大约9点左右的样子,手机突然响了,看了下是宜昌的号码,心里揣测,估计又是骚扰电话,本来想直接挂掉的。但是还是接了,电话那头,瞬间传来一种油腻的打招呼声音。大学…

    技术杂谈 2023年7月11日
    069
  • Java基础——JDK1.8后的日期处理类

    Java1.0中包含了一个Date类,但是它的大多数方法已经在Java 1.1引入Calendar类之后被弃用了。而Calendar并不比Date好多少。它们面临的问题是: 可变性…

    技术杂谈 2023年7月24日
    081
  • 【CompletableFuture】CompletableFuture中join()和get()方法的区别

    一.相同点: join()和get()方法都是用来获取CompletableFuture异步之后的返回值 二.区别: 1.join()方法抛出的是uncheck异常(即未经检查的异…

    技术杂谈 2023年6月1日
    088
  • 今天把HP6520S笔记本给拆解了

    今天把HP6520S笔记本给拆解了 两年前买的爱机 HP 6520s,实在欢喜的不得了,但随着每天15小时左右的高负荷工作,爱机 最近的风扇声音也开始烦躁起来了,且一天叫个不停,难…

    技术杂谈 2023年7月11日
    085
  • Linux 搭建Apollo

    简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用…

    技术杂谈 2023年7月11日
    083
  • 熟悉SandBoxie开源代码优先 沙盒

    熟悉SandBoxie开源代码优先 原理引用官方网站的一段话:电脑就像一张纸,程序的运行与改动,就像将字写在纸上。而Sandboxie就相当于在纸上放了块玻璃,程序的运行与改动就像…

    技术杂谈 2023年5月31日
    066
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球