最近准备面试题,想之前面试过一家公司时遇到一个sql题,横向展示一个表中数据,当时没写出现写下总结,以免忘记。
-- ------------------------------ Table structure for `t_subject`-- ----------------------------DROP TABLE IF EXISTS `t_subject`;CREATE TABLE `t_subject` ( `id` int(11) NOT NULL DEFAULT '0', `name` varchar(255) DEFAULT NULL, `subject` varchar(255) DEFAULT NULL, `results` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of t_subject-- ----------------------------INSERT INTO `t_subject` VALUES ('1', '小明', '语文', '50');INSERT INTO `t_subject` VALUES ('2', '小明', '数学', '20');INSERT INTO `t_subject` VALUES ('3', '小乐', '英语', '122');INSERT INTO `t_subject` VALUES ('4', '小乐', '语文', '500');INSERT INTO `t_subject` VALUES ('5', '小二', '数学', '100');有一张表,表中包含一个三个人有三个科目。
SELECT t.name , SUM( IF ( t.subject = '语文', t.results, 0 ) ) AS '语文', SUM( IF ( t.subject = '数学', t.results, 0 ) ) as '数学', SUM( IF ( t.subject = '英语', t.results, 0 ) ) as '英语'FROM t_subject tGROUP BY (t.name);
执行结果如下:

当时很好奇为什么需要加SUM函数进行求和,去掉之后执行SQL如下
芝麻乐开源众筹系统采用php+mysql开发,基于MVC开发,适用于各类互联网金融公司使用,程序具备模板分离技术,您可以根据您的需要进行应用扩展来达到更加强大功能。前端使用pintuer、jquery、layer等....系统易于使用和扩展简单的安装和升级向导多重业务逻辑判断,预防出现bug后台图表数据方式,一目了然后台包含但不限于以下功能:用户认证角色管理节点管理管理员管理上传配置支付配置短信平
1

初步分析如果不加此函数SQL执行默认只会对进行分组后的数据进行统计
SELECT *FROM t_subject tGROUP BY t.name;

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号