当前位置: 首页 > news >正文

页面设计站在学员的角度网站如何快速推广

页面设计站在学员的角度,网站如何快速推广,哪些网站做批发衣服,品牌建设规划方案一、前言 二、简述 1、行转列概念 2、列转行概念 三、GaussDB数据库的行列转行实验示例 1、行转列示例 1)创建实验表(行存表) 2)静态行转列 3)行转列(结果值:拼接式) 4&…

一、前言

二、简述

1、行转列概念

2、列转行概念

三、GaussDB数据库的行列转行实验示例

1、行转列示例

1)创建实验表(行存表)

2)静态行转列

3)行转列(结果值:拼接式)

4)动态行转列(拼接SQL式)

2、列转行示例

1)创建实验表(复用前面的测试数据)

2)使用union all,将各科目(数学、英语、语文)整合为一列

四、小结

一、前言

在构建数据仓库或做数据分析时,需要对原始数据的结构进行一定的处理,有时涉及到“行转列”,有时涉及到“列转行”,那么这两个转换的方式具体是什么,有什么差异,怎么实现,今天我们将以GaussDB数据库为例,给大家做一下讲解。

二、简述

1、行转列概念

即将多行一列数据转为一行多列显示。通常转化后将某一列分类后的值作为新的列名,将此值对应的多行数据显示成一行。

2、列转行概念

即将一行多列数据转成多行一列显示。通常将转化后的列名为某一行中某一列的值,来识别原先对应的数据。

三、GaussDB数据库的行列转行实验示例

用一张学生成绩来举例:从老师的角度,在录入成绩时,每科老师都会单独录入每个学生的本科成绩。而从学生的角度,学生只关心自己各科的成绩分别是多少。所以如果把老师录入数据作为原始表,那么学生查看自己的成绩时就要用到行转列,如果让学生上报自己各科的成绩,然后老师去查对应学科的学生考试成绩时,那就是列转行了。

1、行转列示例

1)创建实验表(行存表)

--创建实验表(行存表)
CREATE TABLE grade(
name VARCHAR(10)
,course VARCHAR(10)
,score INT);--初始化测试数据
INSERT INTO grade VALUES ('张三','数学',80);
INSERT INTO grade VALUES ('张三','英语',88);
INSERT INTO grade VALUES ('张三','语文',95);
INSERT INTO grade VALUES ('李四','数学',88);
INSERT INTO grade VALUES ('李四','英语',70);
INSERT INTO grade VALUES ('李四','语文',93);--查看结果
SELECT * FROM grade ORDER BY course;

2)静态行转列

使用sum、case when的方式:

--静态行转列
SELECT name ,sum(case when course = '数学' then score else 0 end) AS "数学",sum(case when course = '英语' then score else 0 end) AS 英语,sum(case when course = '语文' then score else 0 end) AS 语文
FROM grade 
GROUP BY name;

3)行转列(结果值:拼接式)

使用listagg within group:

--行转列(结果值:拼接式)
SELECT name, LISTAGG(score,',') WITHIN GROUP (ORDER BY course) FROM grade GROUP BY name;

4)动态行转列(拼接SQL式)

通过“listagg + 创建FUNCTION + VIEW”的方式实现

--动态行转列(SQL拼接式)
SELECT listagg(concat('SUM(CASE WHEN course = ''', course, ''' THEN score ELSE 0 END) AS "', course,'"'),',') WITHIN GROUP(ORDER BY 1) AS concat_text FROM (SELECT DISTINCT course FROM grade);--concat_text的结果:
SUM(CASE WHEN course = '数学' THEN score ELSE 0 END) AS "数学",SUM(CASE WHEN course = '英语' THEN score ELSE 0 END) AS "英语",SUM(CASE WHEN course = '语文' THEN score ELSE 0 END) AS "语文"--创建一个函数。
CREATE OR REPLACE FUNCTION fun_test()
RETURNS VOID
LANGUAGE SQL
AS $$ DECLARE
s_sql text;
rec record;
BEGIN        s_sql := 'SELECT listagg(CONCAT(''SUM(CASE WHEN course = '''''', course, '''''' THEN score ELSE 0 END) AS "'', course, ''"'' ),'','' ) WITHIN GROUP(ORDER BY 1) AS concat_text FROM (SELECT DISTINCT course FROM grade);'; EXECUTE s_sql INTO rec;    s_sql := 'DROP VIEW IF EXISTS v_score; CREATE VIEW v_score AS SELECT name, ' || rec.concat_text || ' FROM grade GROUP BY name;';EXECUTE s_sql;
END $$;--调用
CALL fun_test();--查看执行结果
select * from v_score;

Tip:请注意SQL拼写时的英文单引号、双引号。

2、列转行示例

1)创建实验表(复用前面的测试数据)

--创建实验表(复用前面的测试数据)
CREATE TABLE grade1 AS 
SELECT name ,sum(case when course = '数学' then score else 0 end) AS "数学",sum(case when course = '英语' then score else 0 end) AS 英语,sum(case when course = '语文' then score else 0 end) AS 语文
FROM grade 
GROUP BY name;--查看结果
SELECT * FROM grade1;

2)使用union all,将各科目(数学、英语、语文)整合为一列

--使用union all,将各科目(数学、英语、语文)整合为一列
SELECT * FROM 
(
SELECT name, '数学' AS course, 数学 AS score FROM grade1
union all
SELECT name, '英语' AS course, 英语 AS score FROM grade1
union all
SELECT name, '语文' AS course, 语文  AS score FROM grade1
) 
order by name;

四、小结

行列互转在一些数据库使用场景中经常用到,比如数据分析、数仓建设等。但不同的数据库软件有着不同处理方式,但是行列换的基本思路是一致的。本文主要是以GaussDB数据为平台,为大家做了简单的讲述 ,欢迎测试。

——结束

http://www.dinnco.com/news/62211.html

相关文章:

  • 360网络推广5000元网站seo推广
  • server2003网站建设佛山网站设计实力乐云seo
  • 美国做化工的b2b网站如何推广小程序
  • 网易邮箱企业版关键词优化推广公司
  • 温州做网站 掌熊号百度竞价推广运营
  • 公安网站备案服务类型怎么引流到微信呢
  • 深圳网站建设公司 犀牛云 移动云网站网络营销策划案例
  • 大庆免费网站建设公网络营销课程个人总结范文
  • 做购物网站适合的服务器发稿媒体平台
  • 博客类网站建设广州排名推广
  • 网站是怎样制作的百度关键词价格查询软件
  • css层叠样式会不会影响打开网站的速度网站链接分析工具
  • 沈阳城乡建设官方网站大数据营销的概念
  • 刀客源码seo咨询推广找推推蛙
  • 网站建设个人年终总结搜索引擎优化的方法
  • 做网站租服务器seo包括哪些方面
  • 专门做设计文案的网站公司宣传网页怎么做
  • 百度网盟推广有哪些网站营销方案100个软文
  • 南阳做网站哪个好免费网站安全软件大全
  • 微信网站怎么做的好名字吗口碑营销的步骤
  • 展示型企业网站全自动推广引流软件免费
  • 做网站设计要注意什么问题太原竞价托管公司推荐
  • 政府机关网站制作网站快速优化排名推荐
  • 做游戏网站的目地下载应用商店
  • 海宁网站制作怎么建网页
  • 湖南做网站 x磐石网络最新热搜新闻
  • 陕西的网站建设公司排名广州竞价外包
  • 网站开发 jsp加密关键词排名代做
  • 公司网站开发报价网络推广一个月的收入
  • 长春集团网站建设b站推广渠道