欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请教大家,这条选择语句应该怎样写

更新时间: 2014-01-05 02:17:08 责任编辑: Author_N1

 

请问大家,这条选择语句应该怎样写
现在写到数据库选择,但是好久没用,有点忘了
有一张表table1,有一列叫name,比如表有100行,而每一行的这一列以不同字母开头,现在要进行统计出不同字母开头的top 5。
比如有这样的表:
id    name     
1     pa2323   
2     wa1232
3     ya9823
4     mn2342
5     pa1232
6     ui1232
.     ......
.     ......
我想要的就是pa开头的有几条,wa开头的有几条,ya开头的有几条。想到一个笨办法,先用一个语句substr()得到name列开头两个字母总共有多少种,然后对每一种写select count,还有更好的办法吗  
--参考方法--
select top 5 left(name,2),count(left(name,2))
from table1
group by left(name,2)
order by count(left(name,2)) desc
--参考方法--
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-01-02 13:26:31
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[table1]
if object_id('[table1]') is not null drop table [table1]
go 
create table [table1]([id] int,[name] varchar(6))
insert [table1]
select 1,'pa2323' union all
select 2,'wa1232' union all
select 3,'ya9823' union all
select 4,'mn2342' union all
select 5,'pa1232' union all
select 6,'ui1232'
--------------开始查询--------------------------
select top 5 left(name,2) '以字母开头',count(left(name,2)) '数量'
from table1
group by left(name,2)
order by count(left(name,2)) desc
----------------结果----------------------------
/* 
以字母开头 数量
----- -----------
pa    2
ya    1
wa    1
ui    1
mn    1
*/

--参考方法--
select top 5
       substring(name,1,2) as name,
       COUNT(*) cc
from table1
group by substring(name,1,2)
order by count(*) desc

--参考方法--
如果取1个字母,酒吧left后面的2改成1。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:08
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7965/
本文WWW.DOC100.NET DOC100.NET版权所有。