mysql-二维矩阵表格sql实现

本文介绍了如何使用MySQL来创建二维矩阵表格,通过四个步骤详细阐述了统计单笔数据的两个维度值、维度划分、组合GROUP BY结果以及转换横纵轴的过程。
摘要由CSDN通过智能技术生成

背景

1、分两个维度,统计数据并形成一个二维数据展现形式

2、横轴标为统计维度1,纵轴为统计维度2

横轴x区分为:x<=5,5<x<10,x>10
纵轴y区分为:y<=5,5<y<10,y>10

形成如下图表格数据
维度2-->维度1 x<=5 5<x<10 x>10
y<=5 20 3 1
5<x<=10 1 2 1
y>10 0 0 1
步骤一:先统计出单笔两个维度的值
select user,x,y from test01

如图

user x y
A 1 2
B 6 2
C 5 10
D 7 11
E 11 2
步骤二:维度划分打标记
将每条记录的x,y划入到对应分级中,例如:
记录:A,x=1,y=2 划入等级为 A (x<=5) (y<=5)
记录:B,x=6,y=2 划入等级为 A (5<x<=10) (y<=5)

SQL如下

select user 
user,
(case 
	when x<=5 then 'x<=5' 
	when x>5 and x<=10 then '5<x<=10' 
	when x>10 then 'x>10'
	else 'NULL' end) as tagX,
(case 
	when y<=5 then 'y<=5' 
	when y>5 
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二维表格转为树形结构的 SQL 查询语句,可以使用 MySQL 的 WITH RECURSIVE 语句实现。 假设我们有一个名为 `category` 的表格,包含以下字段: - `id`: 分类 ID - `name`: 分类名称 - `parent_id`: 父级分类 ID 首先,需要从 `category` 表格中选出所有的根节点,即 `parent_id` 为 NULL 或 0 的记录,作为递归查询的起点。这可以通过以下查询语句实现: ``` WITH RECURSIVE category_tree AS ( SELECT id, name, parent_id, 0 AS level FROM category WHERE parent_id IS NULL OR parent_id = 0 UNION ALL SELECT c.id, c.name, c.parent_id, ct.level + 1 FROM category c JOIN category_tree ct ON c.parent_id = ct.id ) SELECT * FROM category_tree; ``` 上面的查询语句中,我们定义了一个名为 `category_tree` 的递归表格,初始记录集合为 `SELECT id, name, parent_id, 0 AS level FROM category WHERE parent_id IS NULL OR parent_id = 0`,即选出所有的根节点,并为它们设置初始层级为 0。 接着,我们使用 `UNION ALL` 连接递归表格和 `category` 表格,以便逐层向下递归。在递归表格中,我们通过 `JOIN` 和 `ON` 子句将当前层级的记录与上一层级的记录连接起来,以便获取当前层级的子节点。同时,我们将上一层级的层级数加一,作为当前层级的层级数。 最后,我们从递归表格 `category_tree` 中选出所有记录,即可得到树形结构的数据。 注意:在使用 WITH RECURSIVE 语句时,必须确保递归表格中至少包含一个初始记录集合,否则会导致无限递归。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值