sql中查询同一列所有值出现的次数

建表country_year_population_tab:

-- ----------------------------
-- Table structure for country_year_population_tab
-- ----------------------------
DROP TABLE IF EXISTS `country_year_population_tab`;
CREATE TABLE `country_year_population_tab` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '表主键',
  `country` varchar(255) DEFAULT NULL COMMENT '国家',
  `popution` varchar(255) DEFAULT NULL COMMENT '人口',
  `year` varchar(255) DEFAULT NULL COMMENT '年份',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of country_year_population_tab
-- ----------------------------
INSERT INTO `country_year_population_tab` VALUES ('1', '中国', '100', '2000');
INSERT INTO `country_year_population_tab` VALUES ('2', '美国', '120', '2000');
INSERT INTO `country_year_population_tab` VALUES ('3', '德国', '50', '2001');
INSERT INTO `country_year_population_tab` VALUES ('4', '日本', '30', '2013');
INSERT INTO `country_year_population_tab` VALUES ('5', '中国', '200', '2015');
INSERT INTO `country_year_population_tab` VALUES ('6', '韩国', '20', '2011');
INSERT INTO `country_year_population_tab` VALUES ('7', '英国', '60', '2012');
INSERT INTO `country_year_population_tab` VALUES ('8', '南非', '130', '2017');
INSERT INTO `country_year_population_tab` VALUES ('9', '中国', '500', '2018');
INSERT INTO `country_year_population_tab` VALUES ('11', '美国', '200', '2018');

sql中查询同一列所有值出现的次数_第1张图片

需要查询country中各个国家出现的次数

SQL语句:

SELECT
	country AS 国家,
	COUNT(*) AS 次数
FROM
	country_year_population_tab
GROUP BY
	country

结果:

sql中查询同一列所有值出现的次数_第2张图片

知识点:

count(*)统计的是结果集的总条数,count(字段名)统计的是该字段值不为null的总条数

Group By:从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理

总结:count(*)先拿到一个计算各个字段值总条数的结果集,然后group by根据某个字段来分组,比如上面的例子,根据国家来分组,那么就是计算各个国家出现的次数。

你可能感兴趣的:(sql)