在做后台管理系统的时候,有很大概率是要与各种图表数据打交道,

那么如何通过SQL查出基本图表的数据呢,以折线图为例,

X轴为日期,Y轴为统计数据,那么我们通过SQL如何查询出连续日期下的统计数据呢,

假设我们数据库有一张表为 A,A表有createdAt,count字段,count表示数量,createdAt表示生成数据的日期,

A表中可能存了多条相同日期但是不同数量的数据,比如:

| createdAt  | count |

| 2024-04-01 | 1 |

| 2024-04-01 | 12 |

| 2024-04-02 | 1 |

那么我想查询从4月1到4月7的统计数据,并保证日期连续性,2024-04-01 2024-04-02 ... 2024-04-07,这里用PostgreSQL 来实现

WITH date_sequence AS (
SELECT start_date + sequence_num AS continuous_date
FROM (SELECT '2024-04-01'::date AS start_date, generate_series(0, 9) AS sequence_num) AS dates
)
SELECT continuous_date,COALESCE(SUM(count),0) AS count
FROM date_sequence
LEFT JOIN (SELECT id, TO_CHAR("createdAt", 'YYYY-MM-DD')::date AS date1 FROM "A") AS subquery
ON date_sequence.continuous_date = subquery.date1
GROUP BY continuous_date
ORDER BY continuous_date ASC

解释:

generate_series 用于生成一个数字列,在PostgreSQL中,对日期数据进行运算操作,会使日期进行对应的变更,如:

然后用WITH 将这个日期列封装一下,然后再去LEFT JOIN查A表,用日期进行关联,因为A表中会有重复的,所以我们用“日期”字段进行GROUP BY ,再通过SELECT SUM("count")字段,就能查出日期列对应的数据了,然后再用 COALESCE 函数将为null的数据填充为0就好了

最后查出的数据就是这样子的:

SQL查折线图数据的更多相关文章

  1. 解决echarts的叠堆折线图数据出现坐标和值对不上的问题

    原文:https://blog.csdn.net/qq_36538012/article/details/88889545 ------------------------------- 说一个小bu ...

  2. echarts折线图--数据交互

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. Echarts使用及动态加载图表数据 折线图X轴数据动态加载

    Echarts简介 echarts,缩写来自Enterprise Charts,商业级数据图表,一个纯JavaScript的图表库,来自百度...我想应该够简洁了 使用Echarts 目前,就官网的文 ...

  4. java代码实现highchart与数据库数据结合完整案例分析(二)---折线图

    作者原创:未经博主允许不许转载 在上一篇的博客中,展示和分析了如何做一个饼状图,有疑问可以参考上一篇博客. 现在分析和展示折线图的绘制和案例分析, 先展示效果图: 与饼状图不同的是,折线图展现更多的数 ...

  5. JFreeChart 图表生成实例(饼图、柱状图、折线图、时序图)

    import java.awt.BasicStroke; import java.awt.Color; import java.io.FileOutputStream; import java.io. ...

  6. MVC折线图应用

    后台 获取值并转换成json数据存到实体里面,然后前台输出 HighchartsModels model = new HighchartsModels(); model.DataDicJson = J ...

  7. 【带着canvas去流浪】(2)绘制折线图

    目录 一. 任务说明 二. 重点提示 三. 示例代码 3.1 一般折线图 3.2 用贝塞尔曲线绘制平滑折线图 四. 大数据量场景 示例代码托管在:https://github.com/dashnowo ...

  8. Echarts动态加载柱状图和折线图混合展示的实例

    一.引入echarts文件: <script type="text/javascript" src="echarts.js"></script ...

  9. PHP使用JpGraph绘制折线图

    PHP使用JpGraph绘制折线图 下载jpgraph类库,使用的是src目录下的类文件. require_once './src/jpgraph.php'; require_once './src/ ...

  10. 带着canvas去流浪系列之二 绘制折线图

    [摘要] 用canvasAPI实现echarts简易图表 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 任务说明 使用原生canvasAPI绘制 ...

随机推荐

  1. 使用Selenium爬取动态网页

    1.使用Selenium爬取动态网页 In [ ]: from selenium import webdriver driver = webdriver.Chrome() driver.get('ht ...

  2. oeasy教您玩转vim - 1 - # 存活下来 🥊

    存活下来 更新 apt 源,升级 vim vim 是什么 vim 是类 unix 系统上的一个文本编辑神器,在 Linux 系统环境中也被许多程序员使用,书写程序和文档. 我们本次课程将围绕 Vim ...

  3. [oeasy]python0045_四种进制_binary_octal_decimal_hexadecimal

    四种进制 回忆上次内容 上次研究了 通过 八进制数值 转义 \ooo 把(ooo)8进制对应的ascii字符输出 转义序列 \n.\t 是 转义序列 \xhh 也是 转义序列 \ooo 还是 转义序列 ...

  4. Vue Axios二次封装

    // axios二次封装 import axios from 'axios' import qs from 'qs' /*** *判断环境变量区分接口的默认地址 */ switch (process. ...

  5. 使用uWSGI+nginx部署Django项目(Ubuntu)

    对于uwsgi+nginx的部署方式,它的访问关系大概是: 1 the web client <-> the web server <-> the socket <-&g ...

  6. Llama 3.1 - 405B、70B 和 8B 的多语言与长上下文能力解析

    Llama 3.1 发布了!今天我们迎来了 Llama 家族的新成员 Llama 3.1 进入 Hugging Face 平台.我们很高兴与 Meta 合作,确保在 Hugging Face 生态系统 ...

  7. springsecurity流程梳理与总结

    springsecurity的基本使用方法学习完了,还是有些懵圈,再回过头来梳理一下流程以及使用情况 1-4.传一个User实体,new一个UserPasswordAuthenticationToke ...

  8. VScode配置PHP开发环境

    vscode配置php开发环境 使用vscode配置PHP开发环境,首先要下载vscode, vscode下载 下载完vscode之后,可以在扩展里面下载中文版本 将vscode下载完之后,需要下载x ...

  9. 【Layui】08 时间线 Timeline

    文档地址: https://www.layui.com/demo/timeline.html 常规时间线: <ul class="layui-timeline"> &l ...

  10. 元学习的经典文献:S. Thrun - 1998 - LEARNING TO LEARN: INTRODUCTION AND OVERVIEW

    地址: https://link.springer.com/chapter/10.1007/978-1-4615-5529-2_1