SQL 创建水平直方图

yizhihongxing

当需要可视化数据分布时,水平直方图是一种有效的方式。以下是使用SQL创建水平直方图的完整攻略,包含两条实例。

准备数据

在进行水平直方图绘制之前,需要准备数据,下面创建一个示例表:

CREATE TABLE sales (
  salesperson varchar(50),
  amount decimal(10, 2)
);

INSERT INTO sales(salesperson, amount)
VALUES ('Alice', 100),
       ('Bob', 200),
       ('Charlie', 150),
       ('David', 75),
       ('Ella', 300),
       ('Frank', 90),
       ('Grace', 100),
       ('Helen', 120),
       ('Ivan', 350),
       ('Judy', 85);

上面的表包括了销售人员的名称和销售额数据。

绘制水平直方图

接下来,通过以下步骤制作一个水平直方图。

步骤 1:数据分组

首先,需要根据一定的条件(例如销售额区间)计算每个组的频率。

下面的语句将会把数据按照销售额区间划分,计算出每个区间的 salesperson 人数。

SELECT
  CONCAT(CAST((amount / 100) AS INT) * 100, '-', CAST((amount / 100) AS INT) * 100 + 99) AS amount_range,
  COUNT(salesperson) AS frequency
FROM sales
GROUP BY amount_range;

结果如下:

| amount_range | frequency |
|--------------|-----------|
| 0-99         | 2         |
| 100-199      | 3         |
| 200-299      | 2         |
| 300-399      | 2         |

这就是分组后的数据。

步骤 2:水平直方图绘制

现在再来看看如何绘制水平直方图。可以使用下面的语句来创建水平直方图:

SELECT 
   amount_range,
   CONCAT(REPEAT(' ', 10 - LENGTH(amount_range)), amount_range, ' |', REPEAT('*', frequency / 2))) AS histogram
FROM 
    (
     SELECT
         CONCAT(CAST((amount / 100) AS INT) * 100, '-', CAST((amount / 100) AS INT) * 100 + 99) AS amount_range,
         COUNT(salesperson) AS frequency
     FROM sales
     GROUP BY amount_range
    ) AS bin
ORDER BY amount_range;

上面的语句将会绘制一个水平直方图,输出的结果如下:

| amount_range | histogram      |
|--------------|----------------|
| 0-99         | 0-99   |*     |
| 100-199      | 100-199|***   |
| 200-299      | 200-299|**    |
| 300-399      | 300-399|**    |

这里采用重复星号来表示每个组的频率。在这个示例中,frequency / 2 将是每个区间中星号的数量。如果需要调整宽度,请修改 REPEAT('*',frequency / 2) 中的数字。

另一种实例

除了上面的实例,通过下面的步骤,也可以绘制一个水平直方图。

步骤 1:数据分组

首先,需要根据一定的条件(例如月份)计算每个组的频率。

下面的语句将会把数据按照月份划分,计算出每个月的订单数。

SELECT
  LEFT(order_date, 7) AS month,
  COUNT(*) AS frequency
FROM orders
GROUP BY month;

结果如下:

| month     | frequency |
|-----------|-----------|
| 2019-01   | 10        |
| 2019-02   | 15        |
| 2019-03   | 12        |
| 2019-04   | 8         |
| 2019-05   | 7         |

步骤 2:水平直方图绘制

现在,可以使用下面的语句绘制水平直方图:

SELECT 
   month,
   CONCAT(month, ' |', REPEAT('*', frequency))) AS histogram
FROM 
    (
     SELECT
         LEFT(order_date, 7) AS month,
         COUNT(*) AS frequency
     FROM orders
     GROUP BY month
    ) AS bin
ORDER BY month;

这里使用的是重复星号来表示每个月的订单数。输出的结果如下:

| month     | histogram    |
|-----------|--------------|
| 2019-01   | 2019-01 |********** |
| 2019-02   | 2019-02 |*************** |
| 2019-03   | 2019-03 |************ |
| 2019-04   | 2019-04 |******** |
| 2019-05   | 2019-05 |******* |

这里使用的是重复星号来表示每个月的订单数。在这个示例中,frequency 将是每个区间中星号的数量。如果需要调整宽度,请修改 REPEAT('*',frequency) 中的数字。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL 创建水平直方图 - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • 05【掌握】 SpringBoot 清空Redis所有缓存

    package top.yangbuyi.system.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.sp…

    Redis 2023年4月11日
    00
  • 关于mysql中时间日期类型和字符串类型的选择

    首先,需要了解MySQL中的时间日期和字符串类型分别是什么。 时间日期类型包括: DATE: 日期类型,允许的范围为’1000-01-01’到’9999-12-31’。 TIME: 时间类型,以’HH:MM:SS’的格式存储,范围为’-838:59:59’到’838:59:59’。 DATETIME: 日期和时间类型,以’YYYY-MM-DD HH:MM:S…

    database 2023年5月22日
    00
  • redis无法获取连接原因分析

    redis无法获取连接原因分析 1、linux开启与关闭redis服务器的方式 服务器的启动 启动服务器参数启动    redis-server –port 端口号 启动服务器–配置文件启动      redis-server  config_file_name(配置文件) 默认启动   redis-server 客户端启动 redis-cli [-h …

    Redis 2023年4月13日
    00
  • Linux系统(X64)安装Oracle11g完整安装图文教程另附基本操作

    Linux系统(X64)安装Oracle11g完整安装图文教程 简介 本文将给各位读者提供详细说明,关于在Linux系统(X64)上安装Oracle11g的完整安装图文教程。旨在为读者提供一份详细的安装攻略。本攻略内容包括Oracle11g的基本操作,以及在Linux系统下Oracle11g的配置等。本文将从以下几个方面对Oracle11g进行详细讲解: 环…

    database 2023年5月22日
    00
  • SQLite 和 MariaDB 的区别

    SQLite 和 MariaDB 是两种不同的数据库管理系统,主要区别在于其设计目的、使用场景以及性能表现上。下面是详细讲解他们的一篇攻略。 SQLite 和 MariaDB 的概述 SQLite 是一种轻量级的嵌入式数据库管理系统,适用于在资源受限或者没有专门的服务器提供支持的场景下使用。它的底层架构是一个单独的磁盘文件,通常使用 SQL 语言来操作数据。…

    database 2023年3月27日
    00
  • redis源码分析3—结构体—字典

    字典,简单来说就是一种用于保存键值对的抽象数据结构; 注意,字典中每个键都是独一无二的;在redis中,内部的redis的数据库就是使用字典作为底层实现的;     1 字典的实现      在redis中,字典是使用哈希表作为底层实现的,一个hash表里面可以有多个hash表节点,而每个hash表节点就保存了字典中的一个键值对;   hash表定义 tab…

    Redis 2023年4月11日
    00
  • PHP7安装Redis扩展教程【Linux与Windows平台】

    以下是详细的“PHP7安装Redis扩展教程【Linux与Windows平台】”攻略: Linux平台安装Redis扩展 前置条件 已安装PHP7 已安装Redis服务端 已安装PHP7的pecl扩展 步骤一:下载Redis扩展 使用pecl命令下载Redis扩展,执行命令: pecl install redis 步骤二:安装Redis扩展 在完成下载Red…

    database 2023年5月22日
    00
  • 完美解决linux上启动redis后配置文件未生效的问题

    下面是完美解决Linux上启动Redis后配置文件未生效的问题的完整攻略。 问题描述 Redis是一个开源的非关系型数据库,它以键值对的方式存储数据,并且通常被用作缓存或会话存储。在Linux上启动Redis后,有时候配置文件可能会未生效,导致Redis无法正常运行。 解决方案 1. 检查配置文件路径 首先,确认Redis配置文件的路径是否正确。Redis默…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部