导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

group by排序,在线等待

boycheng 紫博蓝网络技术服务有限公司 CTO  2003-12-13 11:56:37
数据是
http://post.baidu.com/f?ct=335544320
http://post.baidu.com/f?ct=335544320
http://post.baidu.com/f?ct=335544320&tn=baiduPostBrowser
http://www2.dcg.cn/bbs/viewthread.php?tid=66433
http://seek.3721.com/left.htm?fw=cm2&name=%D3%FB%CD%FB
http://post.baidu.com/f?ct=335544320&tn=
http://www.yourhue.com/

如何以域名来进行group by

就是按照http://post.baidu.com/,http://www2.dcg.cn/,http://seek.3721.com/
来进行group by
...全文
374 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shuiniu 2003-12-13
declare @web table(URL char(100))
insert @web values('http://post.baidu.com/f?ct=335544320')
insert @web values('http://post.baidu.com/f?ct=335544320')
insert @web values('http://post.baidu.com/f?ct=335544320&tn=baiduPostBrowser')
insert @web values('http://www2.dcg.cn/bbs/viewthread.php?tid=66433')
insert @web values('http://seek.3721.com/left.htm?fw=cm2&name=%D3%FB%CD%FB')
insert @web values('http://post.baidu.com/f?ct=335544320&tn=')
insert @web values('http://www.yourhue.com/')


select 'http://' + left(substring(url,8,1000),CHARINDEX('/',substring(url,8,1000))) url
from @web
group by 'http://' + left(substring(url,8,1000),CHARINDEX('/',substring(url,8,1000)))
/*
url
--------------------------
http://post.baidu.com/
http://seek.3721.com/
http://www.yourhue.com/
http://www2.dcg.cn/

(所影响的行数为 4 行)
*/
回复
dlpseeyou 2003-12-13
CHARINDEX
返回字符串中指定表达式的起始位置。

语法
CHARINDEX ( expression1 , expression2 [ , start_location ] )

参数
expression1

一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。

expression2

一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。

start_location

在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。

返回类型
int

只有这样帮助了
注释
如果 expression1 或 expression2 之一属于 Unicode 数据类型(nvarchar 或 nchar)而另一个不属于,则将另一个转换为 Unicode 数据类型。

如果 expression1 或 expression2 之一为 NULL 值,则当数据库兼容级别为 70 或更大时,CHARINDEX 返回 NULL 值。当数据库兼容级别为 65 或更小时,CHARINDEX 仅在 expression1 和 expression2 都为 NULL 时返回 NULL 值。

如果在 expression2 内没有找到 expression1,则 CHARINDEX 返回 0。
回复
txlicenhe 2003-12-13
楼上有笔误:
select left(aa,charindex('/',aa,8)),count(*)
from 表 group by left(aa,charindex('/',aa,8))
回复
--加排序
select 域名=lft(aa,charindex('/',aa,8)),数量=count(*)
from 表 group by lft(aa,charindex('/',aa,8))
order by 域名
回复
--例子:
declare @t table(aa varchar(100))
insert into @t
select 'http://post.baidu.com/f?ct=335544320'
union all select 'http://post.baidu.com/f?ct=335544320'
union all select 'http://post.baidu.com/f?ct=335544320&tn=baiduPostBrowser'
union all select 'http://www2.dcg.cn/bbs/viewthread.php?tid=66433'
union all select 'http://seek.3721.com/left.htm?fw=cm2&name=%D3%FB%CD%FB'
union all select 'http://post.baidu.com/f?ct=335544320&tn='
union all select 'http://www.yourhue.com/'

--分组统计
select 域名=left(aa,charindex('/',aa,8)),数量=count(*)
from @t group by left(aa,charindex('/',aa,8))

/*--测试结果
域名 数量
---------------------------- ---
http://post.baidu.com/ 4
http://seek.3721.com/ 1
http://www.yourhue.com/ 1
http://www2.dcg.cn/ 1

(所影响的行数为 4 行)

--*/
回复
select lft(aa,charindex('/',aa,8)),count(*)
from 表 group by lft(aa,charindex('/',aa,8))
回复
hglhyy 2003-12-13
建 的left 写错了
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告