Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 SQLServer2005中的分析函数_Sql Server 2005_Oracle - Fatal编程技术网

Sql server 2005 SQLServer2005中的分析函数

Sql server 2005 SQLServer2005中的分析函数,sql-server-2005,oracle,Sql Server 2005,Oracle,我有一个查询,它在ORACLE中工作,但在SQL SERVER 2005中不工作…如何将此查询转换为在SQL SERVER 2005中工作 select user_name , url , count(*) ,first_value(count(*)) over (partition by user_name order by count(*) desc) max_total fr

我有一个查询,它在ORACLE中工作,但在SQL SERVER 2005中不工作…如何将此查询转换为在SQL SERVER 2005中工作

select user_name
       , url
       , count(*)
       ,first_value(count(*)) over (partition by user_name 
                                    order by count(*) desc) max_total
from urls
group by user_name, url
order by max_total desc,user_name
结果:

由于我的评论很大,我将把它作为答案写下来:(

@Tang虽然不太正确,但有一条正确的路径…也许我已经通过查询解决了这个问题,但我希望通过分析函数解决它…我的查询是这样的

select urls.user_name
       ,urls.url
       ,count(*) ct
       ,max_amount 
from urls
     ,(select user_name
              ,max(amount) max_amount
       from (select user_name
                    ,url
                    ,count(*) amount
             from urls
             group by user_name,url)  t1
       group by user_name) t2
where urls.user_name=t2.user_name
group by urls.user_name,urls.url,max_amount
order by max_amount desc,urls.user_name,ct desc

@这是测试数据

create table urls(
user_name varchar2(100),
url varchar2(100)
);


insert into urls
values('mariami','google.com');
insert into urls
values('mariami','google.com');
insert into urls
values('mariami','google.com');
insert into urls
values('giorgi','google.com');
insert into urls
values('giorgi','google.com');
insert into urls
values('giorgi','facebook.com');
insert into urls
values('giorgi','facebook.com');
insert into urls
values('giorgi','facebook.com');
insert into urls
values('giorgi','facebook.com');
insert into urls
values('mariami','facebook.com');
insert into urls
values('a','facebook.com');
我的查询结果是:

您的查询结果是:

您能描述一下查询应该返回什么吗?我已经上传了文件,其中显示了结果。您的查询和我的查询都是相同的,您有第二个子查询,我通过MAX解析。如果您运行您的查询和我的查询,结果是相同的。不,不,它不一样(您应该计算每个用户名的MAX)我会给你测试数据看看区别…测试数据是向上的…!瞧!你是对的,我选择了退出第二个内部查询,而事实上它是necessary@tanging谢谢你和我分享的时间我真的很感谢你的帮助谢谢你,你检查过这个了吗?很遗憾,我现在无法检查您的答案,我没有sql server。但明天我将能够检查。。。
WITH    q AS
        (
        SELECT  user_name, url, COUNT(*) AS cnt
        FROM    urls
        GROUP BY
                user_name, url
        )
SELECT  *
FROM    q qo
CROSS APPLY
        (
        SELECT  TOP 1 cnt
        FROM    q qi
        WHERE   qi.user_name = qo.user_name
        ORDER BY
                cnt DESC
        ) qi