mysql数据库sql查询语句:多条件判断
条件:如果账户金额>100且<200,此账号为VIP 1,如果账户金额>200,此账户为VIP 2,
希望查询结果为:VIP 1 多少人
VIP 2 多少人 展开
1、创建测试表,
create table test_person(id int, RMB int);
2、插入测试数据
insert into test_person values(1,180);
insert into test_person values(2,170);
insert into test_person values(3,290);
insert into test_person values(4,160);
insert into test_person values(5,299);
insert into test_person values(6,266);
insert into test_person values(7,155);
3、查询表中所有记录,select t.* from test_person t,
4、编写sql,汇总每个vip类型的用户数,
select vip_type, count(distinct id)
from (select case when RMB>100 and RMB<200 then 'VIP1' when RMB>200 then 'VIP2' end as vip_type, id
from test_person) t
group by vip_type
例子
表格 每个国家的人口数据
国家(country) 人口(population)
中国 600
美国 100
加拿大 100
英国 200
法国 300
日本 250
德国 200
墨西哥 50
印度 250
根据这个国家人口数据,统计亚洲和北美洲的人口数量。
sql语句
SELECT SUM(population),
CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END
FROM Table_A
GROUP BY CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END;
结果
洲 人口
亚洲 1100
北美洲 250
其他 700
select
case when rmb>100 and rmb <=200 then 'VIP1' else 'VIP2' end 级别,
sum(case when rmb>100 and rmb <=200 then 1 else 0 end) 人数
from 表名
group by case when rmb>100 and rmb <=200 then 'VIP1' else 'VIP2' end
我的case when then 怎么不能用?
不应该啊 case when then when then....(else) end 注意后面有个end 我已经运行成功了
(select count(*) from table where 账户金额>200) as vip2,
form table