关于分组查询的简单问题
我的表结构是这样的
品牌 零售户ID 需求量
01 100 20
01 101 30
02 102 40
02 100 40
03 101 60
我希望得到的结果是
品牌 零售户数 总户数
01 2 3
02 2 3
03 1 3
能否用1条sql文查询出来,我按照品牌分组只能得到前两列,最后的总户数表示不出来。
[解决办法]
create table tb(品牌 varchar(10),零售户ID varchar(10),需求量 int)insert into tb values('01', '100', 20)insert into tb values('01', '101', 30)insert into tb values('02', '102', 40)insert into tb values('02', '100', 40)insert into tb values('03', '101', 60)goselect 品牌 , count(零售户ID) 零售户数 , (select count(distinct 零售户ID) from tb) 总户数 from tb group by 品牌/*品牌 零售户数 总户数 ---------- ----------- ----------- 01 2 302 2 303 1 3(所影响的行数为 3 行)*/select 品牌 , count(distinct 零售户ID) 零售户数 , (select count(distinct 零售户ID) from tb) 总户数 from tb group by 品牌/*品牌 零售户数 总户数 ---------- ----------- ----------- 01 2 302 2 303 1 3(所影响的行数为 3 行)*/drop table tb
[解决办法]
if object_id('tb') is not null drop table tbgocreate table tb( 品牌 varchar(10), 零售户ID int, 需求量 int)goinsert into tbselect '01',100,20 union allselect '01',101,30 union allselect '02',102,40 union allselect '02',100,40 union allselect '03',101,60goselect 品牌,零售户数=count(distinct 零售户ID),总户数=(select count(distinct 零售户ID) from tb) from tb group by 品牌go/*品牌 零售户数 总户数---------- ----------- -----------01 2 302 2 303 1 3(3 行受影响)*/