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

网站建设html代码企业推广方式

网站建设html代码,企业推广方式,国内优秀设计网站,焦作网站开发公司电话行转列方法总结1、使用case…when…then2、使用SUM(IF()) 生成列3、使用SUM(IF()) 生成列 WITH ROLLUP 生成汇总行4、使用SUM(IF()) 生成列 UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total5、使用SUM(IF()) 生成列,直接生成汇总结果,不再利用…

行转列方法总结

1、使用case…when…then

2、使用SUM(IF()) 生成列

3、使用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行

4、使用SUM(IF()) 生成列 + UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total

5、使用SUM(IF()) 生成列,直接生成汇总结果,不再利用子查询

环境准备:建表语句 + 初始化数据

-- house.base_score definitionCREATE TABLE `base_score` (`id` int NOT NULL AUTO_INCREMENT,`userid` varchar(20) NOT NULL COMMENT '用户id',`subject` varchar(20) DEFAULT NULL COMMENT '科目',`score` double DEFAULT NULL COMMENT '成绩',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
--- 插入数据INSERT INTO base_score(userid,subject,score) VALUES ('001','语文',90);
INSERT INTO base_score(userid,subject,score) VALUES ('001','数学',92);
INSERT INTO base_score(userid,subject,score) VALUES ('001','英语',80);
INSERT INTO base_score(userid,subject,score) VALUES ('002','语文',88);
INSERT INTO base_score(userid,subject,score) VALUES ('002','数学',90);
INSERT INTO base_score(userid,subject,score) VALUES ('002','英语',75.5);
INSERT INTO base_score(userid,subject,score) VALUES ('003','语文',70);
INSERT INTO base_score(userid,subject,score) VALUES ('003','数学',85);
INSERT INTO base_score(userid,subject,score) VALUES ('003','英语',90);
INSERT INTO base_score(userid,subject,score) VALUES ('003','政治',82);

使用case…when…then 实现行转列

-- 通过case...when...then 实现行记录转列记录
SELECT userid,
SUM(CASE `subject` WHEN '语文' THEN score ELSE 0 END) as '语文',
SUM(CASE `subject` WHEN '数学' THEN score ELSE 0 END) as '数学',
SUM(CASE `subject` WHEN '英语' THEN score ELSE 0 END) as '英语',
SUM(CASE `subject` WHEN '政治' THEN score ELSE 0 END) as '政治'
FROM base_score
GROUP BY userid

使用SUM(IF()) 生成行转列

-- 使用sum(if) 实现行记录转列记录
SELECT userid,
SUM(IF(`subject`='语文',score,0)) as '语文',
SUM(IF(`subject`='数学',score,0)) as '数学',
SUM(IF(`subject`='英语',score,0)) as '英语',
SUM(IF(`subject`='政治',score,0)) as '政治'
FROM base_score
GROUP BY userid

温馨提示:

(1)SUM() 是为了能够使用GROUP BY根据userid进行分组,因为每一个userid对应的subject="语文"的记录只有一条,所以SUM() 的值就等于对应那一条记录的score的值。

假如userid =‘001’ and subject=‘语文’ 的记录有两条,则此时SUM() 的值将会是这两条记录的和,同理,使用Max()的值将会是这两条记录里面值最大的一个。但是正常情况下,一个user对应一个subject只有一个分数,因此可以使用SUM()、MAX()、MIN()、AVG()等聚合函数都可以达到行转列的效果。

(2)IF(subject=‘语文’,score,0) 作为条件,即对所有subject='语文’的记录的score字段进行SUM()、MAX()、MIN()、AVG()操作,如果score没有值则默认为0。

使用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行

-- 使用rollup 生成汇总记录SELECT userid,IFNULL(`subject`,'total') AS `subject`,SUM(score) AS scoreFROM base_scoreGROUP BY userid,`subject`WITH ROLLUPHAVING userid IS NOT NULL
-- 使用sum(if) 实现行记录转列记录 + WITH ROLLUP 生成汇总行SELECT IFNULL(userid,'total') AS userid,
SUM(IF(`subject`='语文',score,0)) as '语文',
SUM(IF(`subject`='数学',score,0)) as '数学',
SUM(IF(`subject`='英语',score,0)) as '英语',
SUM(IF(`subject`='政治',score,0)) as '政治',
SUM(IF(`subject`='total',score,0)) AS '总计'
FROM (SELECT userid,IFNULL(`subject`,'total') AS `subject`,SUM(score) AS scoreFROM base_scoreGROUP BY userid,`subject`WITH ROLLUPHAVING userid IS NOT NULL
) as tmp
GROUP BY userid
WITH ROLLUP;

使用SUM(IF()) 生成列 + UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total

-- 利用SUM(IF()) 生成列 + UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total
SELECT userid,
SUM(IF(`subject`='语文',score,0)) AS 语文,
SUM(IF(`subject`='数学',score,0)) AS 数学,
SUM(IF(`subject`='英语',score,0)) AS 英语,
SUM(IF(`subject`='政治',score,0)) AS 政治,
SUM(score) AS TOTAL
FROM base_score
GROUP BY userid
UNION
SELECT 'TOTAL',
SUM(IF(`subject`='语文',score,0)) AS 语文,
SUM(IF(`subject`='数学',score,0)) AS 数学,
SUM(IF(`subject`='英语',score,0)) AS 英语,
SUM(IF(`subject`='政治',score,0)) AS 政治,
SUM(score) FROM base_score

利用SUM(IF()) 生成列,直接生成结果不再利用子查询

-- 利用SUM(IF()) 生成列 + with rollup 汇总列,直接生成结果不再利用子查询
SELECT userid,
SUM(IF(`subject`='语文',score,0)) AS 语文,
SUM(IF(`subject`='数学',score,0)) AS 数学,
SUM(IF(`subject`='英语',score,0)) AS 英语,
SUM(IF(`subject`='政治',score,0)) AS 政治,
SUM(score) AS TOTAL
FROM base_score
GROUP BY userid WITH ROLLUP;

列转行方法总结

环境准备:建表语句 + 初始化数据

CREATE TABLE base_score1(id INT(11) NOT NULL auto_increment,userid VARCHAR(20) NOT NULL COMMENT '用户id',cn_score DOUBLE COMMENT '语文成绩',math_score DOUBLE COMMENT '数学成绩',en_score DOUBLE COMMENT '英语成绩',po_score DOUBLE COMMENT '政治成绩',PRIMARY KEY(id)
)ENGINE = INNODB DEFAULT CHARSET = utf8;INSERT INTO base_score1(userid,cn_score,math_score,en_score,po_score) VALUES ('001',90,92,80,0);
INSERT INTO base_score1(userid,cn_score,math_score,en_score,po_score) VALUES ('002',88,90,75.5,0);
INSERT INTO base_score1(userid,cn_score,math_score,en_score,po_score) VALUES ('003',70,85,90,82);select * from  base_score1
SELECT userid,'语文' AS course,cn_score AS score FROM base_score1
UNION ALL
SELECT userid,'数学' AS course,math_score AS score FROM base_score1
UNION ALL
SELECT userid,'英语' AS course,en_score AS score FROM base_score1
UNION ALL
SELECT userid,'政治' AS course,po_score AS score FROM base_score1

拓展:UNION与UNION ALL的区别

  1. 对重复结果的处理:UNION会去掉重复记录,UNION ALL不会;

  1. 对排序的处理:UNION会排序,UNION ALL只是简单地将两个结果集合并;

  1. 效率方面的区别:因为UNION 会做去重和排序处理,因此效率比UNION ALL慢很多;

http://www.mmbaike.com/news/51508.html

相关文章:

  • 转做批发鞋子的网站今天最新新闻报道
  • b2b最好的网站安徽关键词seo
  • 来年做哪个网站致富盐城seo网站优化软件
  • 黑料社2023宁波网站seo诊断工具
  • 泗塘新村街道网站建设重庆百度推广排名
  • 展厅设计概念方案北京谷歌优化
  • 软件开发三个主要阶段宁波seo企业推广
  • 如何建设英文网站aso优化渠道
  • wordpress文章排序方式百度关键词优化有效果吗
  • 青岛建设网站制作微信营销平台哪个好
  • 成都网站建设公司哪里有整站优化
  • 在别人网站做的友链_为何百度检测带后缀cnindex.aspseo外贸网站制作
  • 做一个自适应网站多少钱知名的建站公司
  • 可以看帖子的网站企业网站推广
  • 网站用什么软件做seo数据统计分析工具有哪些
  • 怎么做网站在网上能搜到你神马站长平台
  • 做网站报价出名的淘宝怎么提高关键词搜索排名
  • 服务器做网站哪个系统好搜狗搜索推广
  • 建设网站青岛网络广告策划案
  • 建设银行网站用户名怎么查2022年网络流行语
  • wordpress增加购物车网络优化工程师有多累
  • 军事网站建设怎么打谷歌官网入口手机版
  • 沈阳网站制作的公司哪家好seo网络推广技术员招聘
  • 贵州省住房城乡建设厅官网正规seo需要多少钱
  • 中山市两学一做网站简述seo的基本步骤
  • 网站多久备案一次谷歌搜索广告
  • 长治做网站的公司国内疫情最新消息
  • 大数据营销试卷网络优化工具
  • 哪里有做网站企业包就业的培训学校
  • 网站上怎么做返回主页链接广告投放方案