首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于分组查询的简单有关问题

2012-02-26 
关于分组查询的简单问题我的表结构是这样的品牌零售户ID需求量01100200110130021024002100400310160我希望

关于分组查询的简单问题
我的表结构是这样的
品牌 零售户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文查询出来,我按照品牌分组只能得到前两列,最后的总户数表示不出来。

[解决办法]

SQL code
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
[解决办法]
SQL code
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 行受影响)*/ 

热点排行