sql中查询同一列所有值出现的次数
程序员文章站
2022-03-09 10:35:42
...
建表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');
需要查询country中各个国家出现的次数
SQL语句:
SELECT
country AS 国家,
COUNT(*) AS 次数
FROM
country_year_population_tab
GROUP BY
country
结果:
知识点:
count(*)统计的是结果集的总条数,count(字段名)统计的是该字段值不为null的总条数
Group By:从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理
总结:count(*)先拿到一个计算各个字段值总条数的结果集,然后group by根据某个字段来分组,比如上面的例子,根据国家来分组,那么就是计算各个国家出现的次数。
上一篇: MySQL事务的四大隔离级别
下一篇: Sql查询两个时间段有重叠的记录