SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `test`
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` varchar(255) DEFAULT NULL,
`category` varchar(255) DEFAULT NULL,
`series` varchar(255) DEFAULT NULL,
`subject` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('7', '医学', '检验类', '检验科管理');
INSERT INTO `test` VALUES ('8', '医学', '影像类', '医学影像学');
INSERT INTO `test` VALUES ('9', '医学', '中医类', '中医妇科');
INSERT INTO `test` VALUES ('25', '医学', '内科', '消化内科');
INSERT INTO `test` VALUES ('54', '医学', '内科', '消化内科');
INSERT INTO `test` VALUES ('55', '卫生学', '卫生类', '精神卫生');
INSERT INTO `test` VALUES ('75', '医学', '影像类', '医学影像学');
INSERT INTO `test` VALUES ('102', '医学', '中医类', '中医内科');
INSERT INTO `test` VALUES ('107', '工程学', '化学类', '材料学、化学');
INSERT INTO `test` VALUES ('119', '工程学', '化学类', '化学电源');
INSERT INTO `test` VALUES ('120', '工程学', '化学类', '化学电源');
INSERT INTO `test` VALUES ('121', '工程学', '化学类', '电化学');
INSERT INTO `test` VALUES ('122', '电学', '计算机类', '计算机专业');
INSERT INTO `test` VALUES ('123', '电学', '机电类', '机电工程');
INSERT INTO `test` VALUES ('124', '教育学', '教育类', '电子专业教学');
INSERT INTO `test` VALUES ('125', '审计学', '审计类', '财务管理和内部审计');
INSERT INTO `test` VALUES ('127', '医学', '口腔科', '口腔医学');
INSERT INTO `test` VALUES ('128', '医学', '口腔科', '口腔医学');
INSERT INTO `test` VALUES ('129', '医学', '传染科', '感染性疾病');
INSERT INTO `test` VALUES ('130', '医学', '传染科', '感染性疾病');
INSERT INTO `test` VALUES ('131', '工程学', '生物类', '分子生物学');
INSERT INTO `test` VALUES ('132', '卫生学', '检疫类', '检验检疫');
INSERT INTO `test` VALUES ('139', '医学', '口腔科', '口腔医学');
INSERT INTO `test` VALUES ('140', '医学', '传染科', '感染性疾病');
INSERT INTO `test` VALUES ('141', '医学', '传染科', '感染性疾病');
INSERT INTO `test` VALUES ('142', '医学', '中医类', '中医内科');
INSERT INTO `test` VALUES ('143', '医学', '中医类', '中医内科');
INSERT INTO `test` VALUES ('144', '医学', '药剂类', '医院药学');
mysql如何实现结果如下:
category series serNum subject subNum count(*) total
医学 中医类 7 中医内科 2 3 17
医学 中医类 7 中医妇科 2 1 17
医学 传染科 7 感染性疾病 1 4 17
医学 内科 7 消化内科 1 2 17
医学 口腔科 7 口腔医学 1 3 17
医学 影像类 7 医学影像学 1 2 17
医学 检验类 7 检验科管理 1 1 17
医学 药剂类 7 医院药学 1 1 17
卫生学 卫生类 2 精神卫生 1 1 2
卫生学 检疫类 2 检验检疫 1 1 2
审计学 审计类 1 财务管理和内部审计 1 1 1说明:serNum 指 按category 统计并合并了相同的series个数
subNum 指 按series 统计并合并了相同的subject 个数
total指 每一类category 的总数
SELECT a.category,a.series,a.SUBJECT,
(SELECT COUNT(DISTINCT series) FROM test WHERE a.category=category) AS serNum,
(SELECT COUNT(DISTINCT SUBJECT) FROM test WHERE a.category=category AND a.series=series) AS subNum ,
(SELECT COUNT(*) FROM test WHERE a.category=category) AS total,
(SELECT COUNT(*) FROM test WHERE a.category=category AND a.series=series AND a.`subject` =`subject` ) AS subNum1
FROM test a GROUP BY a.category,a.series,a.SUBJECT