将已有编号方式转化为新的方式并统计

需求

在这里插入图片描述

建表语句

/* 将已有编号方式转换为新的方式并统计 */
CREATE TABLE PopTbl
(pref_name VARCHAR(32) PRIMARY KEY,
 population INTEGER NOT NULL);

INSERT INTO PopTbl VALUES('德岛', 100);
INSERT INTO PopTbl VALUES('香川', 200);
INSERT INTO PopTbl VALUES('爱媛', 150);
INSERT INTO PopTbl VALUES('高知', 200);
INSERT INTO PopTbl VALUES('福冈', 300);
INSERT INTO PopTbl VALUES('佐贺', 100);
INSERT INTO PopTbl VALUES('长崎', 200);
INSERT INTO PopTbl VALUES('东京', 400);
INSERT INTO PopTbl VALUES('群马', 50);

比较本分的写法

SELECT 
	case pref_name
		WHEN '德岛' THEN '四国'
		WHEN '香川' THEN '四国'
		WHEN '爱媛' THEN '四国'
		WHEN '高知' THEN '四国'
		WHEN '佐贺' THEN '九州'
		WHEN '福冈' THEN '九州'
		WHEN '长崎' THEN '九州'
	ELSE '其它' END,
	SUM(population)
FROM 
	poptbl
GROUP BY 
	case pref_name
		WHEN '德岛' THEN '四国'
		WHEN '香川' THEN '四国'
		WHEN '爱媛' THEN '四国'
		WHEN '高知' THEN '四国'
		WHEN '佐贺' THEN '九州'
		WHEN '福冈' THEN '九州'
		WHEN '长崎' THEN '九州'
	ELSE '其它' END

这种写法分组函数后也要像前面一样把case语句再一模一样拷一遍,以下是更好的写法,在MySql测试没问题,不保证别的数据库也可以

SELECT 
	case pref_name
		WHEN '德岛' THEN '四国'
		WHEN '香川' THEN '四国'
		WHEN '爱媛' THEN '四国'
		WHEN '高知' THEN '四国'
		WHEN '佐贺' THEN '九州'
		WHEN '福冈' THEN '九州'
		WHEN '长崎' THEN '九州'
	ELSE '其它' END as district,
	SUM(population) as income 
FROM 
	poptbl
GROUP BY district
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值