数据库聚合函数
AVG 求平均
SUM 求和
MIN 求最小
MAX 求最大
COUNT 计数
GROUP BY 分组函数
ORDER BY 排序函数
以上是数据表数据
以下是数据表SQL
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for hyjx
-- ----------------------------
DROP TABLE IF EXISTS `hyjx`;
CREATE TABLE `hyjx` (
`NAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
`CJ` int(25) NULL DEFAULT NULL COMMENT '成绩',
`KM` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '科目'
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of hyjx
-- ----------------------------
INSERT INTO `hyjx` VALUES ('张三', 100, '数学');
INSERT INTO `hyjx` VALUES ('张三', 88, '语文');
INSERT INTO `hyjx` VALUES ('李四', 99, '数学');
INSERT INTO `hyjx` VALUES ('李四', 49, '语文');
INSERT INTO `hyjx` VALUES ('王五', 49, '数学');
INSERT INTO `hyjx` VALUES ('王五', 67, '语文');
INSERT INTO `hyjx` VALUES ('赵六', 88, '数学');
INSERT INTO `hyjx` VALUES ('赵六', 89, '语文');
SET FOREIGN_KEY_CHECKS = 1;
需求一:
实现对表中数据成绩的求和,要求得出上面结果。
SELECT NAME,SUM( CJ ) FROM hyjx GROUP BY NAME ORDER BY SUM( CJ ) DESC
需求二:
实现对表中数据行转列,要求得出上面结果。
SELECT NAME,
SUM( CASE KM WHEN "语文" THEN CJ ELSE 0 END ) 语文,
SUM( CASE KM WHEN "数学" THEN CJ ELSE 0 END ) 数学
FROM hyjx GROUP BY NAME
更多精彩,敬请期待!
后续会更新数据表中列转行。。。
都看到最后了,记得点赞、关注哈!