select [KeyWord],
          cast([CreateDate] as date )CreateDate
          count( distinct  [KeyWord])*1.0/ count(distinct  [KeyWord]) over(partition by cast([CreateDate] as date ))
from tb
group by [KeyWord],
               cast([CreateDate] as date )

解决方案 »

  1.   


    select a.keyword,a.createdate,a.cnt1/convert(numeric(8,2),b.cnt2) from 
    (
    select keyword,convert(date,createdate) as createdate,count(*) as cnt1 from [TB] group by 
     keyword,convert(date,createdate) 
    )a inner join
    (
     select convert(date,createdate) as createdate,count(*) as cnt2 from [TB] group by 
     convert(date,createdate)
    ) b
    on a.createdate=b.createdate
      

  2.   


    OVER 子句不允许使用 DISTINCT
      

  3.   

    把这个:a.cnt1/convert(numeric(8,2),b.cnt2) 处理下,乘以100,加上个“%”
      

  4.   


    OVER 子句不允许使用 DISTINCT
    那参考四楼的吧 我没环境测试
      

  5.   


    feng哥,嘿嘿你的这个逻辑好像跟lz的有差异,去掉distinct后结果有出入呢
      

  6.   


    feng哥,嘿嘿你的这个逻辑好像跟lz的有差异,去掉distinct后结果有出入呢
      

  7.   


    feng哥,嘿嘿你的这个逻辑好像跟lz的有差异,去掉distinct后结果有出入呢

      

  8.   

    if object_id('[TB]') is not null drop table [TB]
    create table [TB]([KeyWord] varchar(50),[ComeFrom] varchar(50),[CreateDate] datetime,[IsDeal] bit)
    insert into [TB]
    select '张三','百度','1900-01-01 02:01:01.000','True' union all
    select '张三','百度','1900-01-02 00:00:00.000','False' union all
    select '张三','搜狗','1900-01-02 00:00:03.000','True' union all
    select '张三','百度','1900-01-02 00:04:00.000','False' union all
    select '张三','谷歌','1900-01-02 00:00:05.000','False' union all
    select '李四','谷歌','1900-01-02 03:00:00.000','True' union all
    select '王五','谷歌','1900-01-03 03:00:00.000','True'
    Go
    SELECT  keyword '关键词',CONVERT(VARCHAR(10),CreateDate,21) '时间(天)',COUNT(*) '关键词总量(该关键词数量)',
    CONVERT(VARCHAR,(CONVERT(FLOAT,COUNT(*))/
    CONVERT(FLOAT,(SELECT COUNT(*) FROM [TB] b 
    WHERE  CONVERT(VARCHAR(10),a.CreateDate,21)=CONVERT(VARCHAR(10),b.CreateDate,21) )) *100))
    +'%'  '关键词占比(天)(关键词总量/当天关键词总量)' FROM [TB]  a
    GROUP BY keyword,CONVERT(VARCHAR(10),CreateDate,21) ORDER BY CONVERT(VARCHAR(10),CreateDate,21) DESC /*关键词                                                时间(天)      关键词总量(该关键词数量) 关键词占比(天)(关键词总量/当天关键词总量)
    -------------------------------------------------- ---------- ------------- -------------------------------
    王五                                                 1900-01-03 1             100%
    李四                                                 1900-01-02 1             20%
    张三                                                 1900-01-02 4             80%
    张三                                                 1900-01-01 1             100%(4 行受影响)
    */