mysql数据库sql查询语句:多条件判断

问题:有这样一张表:字段有:账号(id),账户金额(RMB)条件:如果账户金额>100且<200,此账号为VIP1,如果账户金额>200,此账户为VIP2,希望查询结果为... 问题:有这样一张表:字段有:账号(id),账户金额(RMB)
条件:如果账户金额>100且<200,此账号为VIP 1,如果账户金额>200,此账户为VIP 2,
希望查询结果为:VIP 1 多少人
VIP 2 多少人
展开
 我来答
freechan10
2019-11-15 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.8万
展开全部

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

汐日南莘
推荐于2017-09-30 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:45%
帮助的人:7555万
展开全部
在sql中使用 case when then可以达到多条件判断的目的

例子
表格 每个国家的人口数据
国家(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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
badkano
2013-11-11 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885367
团长

向TA提问 私信TA
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
康熙转世
2013-11-11 · TA获得超过6839个赞
知道大有可为答主
回答量:4325
采纳率:85%
帮助的人:2937万
展开全部
select t.vip,count(*) from(select case when rmb>100 and rmb < 200 then 'vip1' when rmb>200 then 'vip2' end 'vip',rmb from test) t group by t.vip
追问
我的case when then 怎么不能用?
追答
不应该啊 case when then when then....(else) end 注意后面有个end  我已经运行成功了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1wangyu0
2013-11-11 · 超过16用户采纳过TA的回答
知道答主
回答量:64
采纳率:100%
帮助的人:47.9万
展开全部
select distinct (select count(*) from table where 账户金额>100 and 账户金额<200) as vip1,
(select count(*) from table where 账户金额>200) as vip2,
form table
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式