CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

求助超简单SQL语句,但我就是不会

楼主cnfool(天大的白痴)2006-05-28 15:34:07 在 MS-SQL Server / 基础类 提问

TABEL:  
   
  name             金额              
  张三             5.00  
  李四             10.00  
  王麻子         20.05  
  张三             8.75  
  张三             9.90  
  李四             12.00  
   
  用group   by   name   分组后  
  当然是  
  name  
  张三  
  李四  
  王麻子  
   
  但我要得出的是分组后的count,即count=3  
  请问大家这句SQL语句怎么写? 问题点数:75、回复次数:27Top

1 楼xeqtr1982(Visual C# .NET)回复于 2006-05-28 15:40:31 得分 30

declare   @t   table(name   varchar(10),金额   dec(10,2))  
  insert   into   @t   select   '张三'             ,5.00  
  union   all   select   '李四'             ,10.00  
  union   all   select   '王麻子'         ,20.05  
  union   all   select   '张三'             ,8.75  
  union   all   select   '张三'             ,9.90  
  union   all   select   '李四'             ,12.00  
   
  select   count(*)   from   (select   name   from   @t   group   by   name)aTop

2 楼roy_88(中国风_燃烧你的激情!!!)回复于 2006-05-28 15:41:19 得分 0

select   name   ,count(name)from   表名   group   by   nameTop

3 楼yaoyaomaomao(广州考拉)回复于 2006-05-28 15:54:24 得分 0

select   name   ,count(*)   from   表   group   by   nameTop

4 楼sql2006()回复于 2006-05-28 16:13:37 得分 0

顶Top

5 楼cnfool(天大的白痴)回复于 2006-05-28 16:25:13 得分 0

先谢谢大家耐心解答了,但HaN的方法ODBC通不过,  
  而roy_88和yaoyaomaomao(广州考拉)   中的count无疑还是=6  
  是不是我的表达不够清楚,我希望这个时候的结果是count=3(即不论发生多少笔业务,但我要统计的是多少个人参与了消费,再返回人名)Top

6 楼xeqtr1982(Visual C# .NET)回复于 2006-05-28 16:27:19 得分 0

ODBC?  
   
  查询分析器能执行吗?Top

7 楼cnfool(天大的白痴)回复于 2006-05-28 16:48:38 得分 0

在MSSQL的查询分析器里能通过并返回正确答案,  
  但我在软件里应该怎么写呢?我现在正用的不是MSSQL而是mysql,mysql似乎不支持这种写法,我还能怎么写呢?他们后面两者的写法可以怎么改能达到我的目的呢?就是说我既要返回记录总数又要返回每个人名,  
  先谢谢HaN的耐心指导了。Top

8 楼xeqtr1982(Visual C# .NET)回复于 2006-05-28 16:51:23 得分 0

mysql还真没用过。按说应该支持这样的写法的。试试吧  
   
  select   count(*)   from   (select   name   from   表   group   by   name)a  
   
  select   count(*)   from   (select   name   from   表   group   by   name)  
   
  --Top

9 楼cnfool(天大的白痴)回复于 2006-05-28 16:55:14 得分 0

对不起,刚才是我的错,复合查询在这里运行是可以的,是我打错了一个字母所以报错,现在已返回记录数的正确答案,但是能否同时返回name呢?  
  还请HaN指教。  
  另在mysql中  
  select   count(*)   from   (select   name   from   表   group   by   name)a   可行  
   
  select   count(*)   from   (select   name   from   表   group   by   name)   报错Top

10 楼itblog(Just for wife!)回复于 2006-05-28 16:58:45 得分 30

select   count(*)   from   (select   name   from   表   group   by   name)a   可行  
   
  select   count(*)   from   (select   name   from   表   group   by   name)   B   --要加别名,不加,肯定会报错~  
  Top

11 楼Reeezak(坚持信念)回复于 2006-05-28 17:01:24 得分 15

select   count(*)   from   (select   name   from   表   group   by   name)   报错  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  原因是你的from后面的这个子查询是必要要有一个别名的,这是一个规范  
  SQLServer也是有这个规范的  
  而Oracle没有,你可以写也可以不写,但是如果需要子查询的某些字段就必须写  
  反正,写了是符合规范的就是了,hoho  
   
   
  另外,lz希望如何返回name呢?Top

12 楼Reeezak(坚持信念)回复于 2006-05-28 17:03:20 得分 0

lz是要这个效果吗?  
  SELECT   Name,   COUNT(*)   FROM   表   GROUP   BY   NameTop

13 楼itblog(Just for wife!)回复于 2006-05-28 17:03:23 得分 0

另外,你这样写还有有点多余~  
   
  select   count(distinct   name)   from   表    
   
  这样一样可以达到你的目的~Top

14 楼xeqtr1982(Visual C# .NET)回复于 2006-05-28 17:03:29 得分 0

我还以为mysql和access的一样呢。  
   
  select   count(*)   from   (select   name   from   表   group   by   name)   -access不写没问题  
   
  Top

15 楼Reeezak(坚持信念)回复于 2006-05-28 17:05:17 得分 0

还是要这样的效果?  
   
  SELECT   DISTINCT   Name   FROM   表  
  UNION  
  SELECT   COUNT(DISTINCT   Name)   FROM   表Top

16 楼xeqtr1982(Visual C# .NET)回复于 2006-05-28 17:07:45 得分 0

 
  declare   @t   table(name   varchar(10),金额   dec(10,2))  
  insert   into   @t   select   '张三'             ,5.00  
  union   all   select   '李四'             ,10.00  
  union   all   select   '王麻子'         ,20.05  
  union   all   select   '张三'             ,8.75  
  union   all   select   '张三'             ,9.90  
  union   all   select   '李四'             ,12.00  
   
  select   count(*),name   from   (select   name   from   @t   group   by   name)a   group   by   name  
   
  select   count(distinct   name),name   from   @t   group   by   name  
   
  --itblog得好啊。学习Top

17 楼cnfool(天大的白痴)回复于 2006-05-28 17:11:39 得分 0

Reeezak(坚持信念)   (   )   信誉:100     2006-05-28   17:03:00     得分:   0      
     
     
        lz是要这个效果吗?  
  SELECT   Name,   COUNT(*)   FROM   表   GROUP   BY   Name  
       
     
  嘿嘿,我倒是想要记录数+name,但似乎好象一条语句返回不出这个结果来,我现在倒是按照HaN的指导写出结果来了,只是把记录总数和返回name分成了两段查询,看着代码多了总是不爽,有同时返回的办法吗?  
   
  再次谢谢大家热心关注!为感谢大家的热心,分数增加50分。Top

18 楼xeqtr1982(Visual C# .NET)回复于 2006-05-28 17:15:28 得分 0

楼主要的结果是什么样子?  
  Top

19 楼itblog(Just for wife!)回复于 2006-05-28 17:16:41 得分 0

大哥,什么时候结帐?你爽了,大伙还没有爽呢~Top

20 楼cnfool(天大的白痴)回复于 2006-05-28 17:23:24 得分 0

呵呵,马上结贴,本来还想看看有什么可以同时返回记录总数和name的写法的,刚才自己写了又写,想了想没戏,还是必须分成两段。  
  itblog(^ω^)   兄台的方法确实不错,详细指导更不错!谢谢兄台了!Top

21 楼itblog(Just for wife!)回复于 2006-05-28 17:26:26 得分 0

兄弟要这个吗?  
   
  select   name,[count]=(select   count(name)   from   表   where   name=a.name)  
  from   表   a  
  group   by   nameTop

22 楼itblog(Just for wife!)回复于 2006-05-28 17:28:43 得分 0

或是这个~  
   
  select   name,[count]=(select   count(distinct   name)   from   表   )  
  from   表   a  
  group   by   nameTop

23 楼cnfool(天大的白痴)回复于 2006-05-28 17:33:35 得分 0

select     name,[count]=(select     count(name)     from     表     where     name=a.name)      
  from     表     a      
  group     by     name    
   
  这个好象也不能在一个查询表内返回表总记录数和分别的name吧。。。  
   
  不过问题已经解决了,非常感谢各位!但新的问题出来了  
   
  我晕~贴子回复总数大于给分次数什么意思,那要怎么给分?好久不来,难道连给分都不会了!!!!!!?????????!·#¥!·#%¥·#¥%#¥%#¥%……#Top

24 楼xingmaohai(九天揽月)回复于 2006-05-28 17:33:44 得分 0

是要這樣的結果嗎  
  Select   name,count(name)   as   colname   from   tablename    
  group   by   name   having   count(name)=3Top

25 楼cnfool(天大的白痴)回复于 2006-05-28 17:40:03 得分 0

终于结成贴子了!差点把我郁闷死!!!!!老报什么“贴子回复总数大于给分次数”的错!!!  
   
  现在怎么不报错了,你报啊你报啊~~!!!!哼哼!!!!Top

26 楼slxu_yjs04(盐城人)回复于 2006-05-29 07:46:21 得分 0

select   count(*)   from   (select   distinct   name   from   表名   )Top

27 楼molosolo()回复于 2006-05-29 19:40:58 得分 0

select   count(distinct   name)   from   **   group   by   nameTop

相关问题

关键词

得分解答快速导航

  • 帖主:cnfool
  • xeqtr1982
  • itblog
  • Reeezak

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo