原始表单的结构如下:
姓名 品牌 购买时间
张三 IBM 2005
张三 HP 2008
张三 联想 2003
李四 华硕 2001
李四 IBM 2005
李四 IBM 2009
李四 IBM 2009
赵五 华硕 2005
陈留 IBM 2007
......
现在我想统计出每个人所购买的笔记本电脑的数目以及他们是否购买过IBM笔记本电脑(0没有,1有)
就是这样:
姓名 购买总量 是否IBM客户
张三 3 1
李四 4 1
......请教各位这样我该怎么用sql语句实现?小弟新手,希望大家指点!
姓名 品牌 购买时间
张三 IBM 2005
张三 HP 2008
张三 联想 2003
李四 华硕 2001
李四 IBM 2005
李四 IBM 2009
李四 IBM 2009
赵五 华硕 2005
陈留 IBM 2007
......
现在我想统计出每个人所购买的笔记本电脑的数目以及他们是否购买过IBM笔记本电脑(0没有,1有)
就是这样:
姓名 购买总量 是否IBM客户
张三 3 1
李四 4 1
......请教各位这样我该怎么用sql语句实现?小弟新手,希望大家指点!
insert into tb values('张三' , 'IBM' , 2005 )
insert into tb values('张三' , 'HP' , 2008 )
insert into tb values('张三' , '联想' , 2003 )
insert into tb values('李四' , '华硕' , 2001 )
insert into tb values('李四' , 'IBM' , 2005 )
insert into tb values('李四' , 'IBM' , 2009 )
insert into tb values('李四' , 'IBM' , 2009 )
insert into tb values('赵五' , '华硕' , 2005 )
insert into tb values('陈留' , 'IBM' , 2007 )
goselect 姓名 , count(*) 购买总量 , (select count(*) from tb where 品牌 = 'IBM' and 姓名 = t.姓名) 是否IBM客户 from tb t group by 姓名drop table tb/*
姓名 购买总量 是否IBM客户
---------- ----------- -----------
陈留 1 1
李四 4 3
张三 3 1
赵五 1 0(所影响的行数为 4 行)*/
create table tb(姓名 varchar(10), 品牌 varchar(10), 购买时间 int)
insert into tb values('张三' , 'IBM' , 2005 )
insert into tb values('张三' , 'HP' , 2008 )
insert into tb values('张三' , '联想' , 2003 )
insert into tb values('李四' , '华硕' , 2001 )
insert into tb values('李四' , 'IBM' , 2005 )
insert into tb values('李四' , 'IBM' , 2009 )
insert into tb values('李四' , 'IBM' , 2009 )
insert into tb values('赵五' , '华硕' , 2005 )
insert into tb values('陈留' , 'IBM' , 2007 )
goselect 姓名 ,
count(*) 购买总量 ,
case when exists(select 1 from tb where 品牌 = 'IBM' and 姓名 = t.姓名) then 1 else 0 end 是否IBM客户
from tb t group by 姓名drop table tb/*
姓名 购买总量 是否IBM客户
---------- ----------- -----------
陈留 1 1
李四 4 1
张三 3 1
赵五 1 0(所影响的行数为 4 行)
*/
from tb t group by 姓名
这句里面姓名=t.姓名,前面这个t.是什么意思?from tb t这里为什么tb后要加个t