表 i_daycount:
id       i_id              i_date               i_pvcount  i_uvcount
19 13974509 2009-4-23 23:53:00 1394    361
20 21632348 2009-4-23 23:29:00 14    10
21 13974509 2009-4-24 23:59:00 1293    352
22 21632348 2009-4-24 23:06:00 7    5
23 13974509 2009-4-25 13:12:00 225    66
24 21632348 2009-4-25 9:09:00 1    1表 i_user
id      i_user_id       i_login_lasttime      i_user_nick(昵称)
1 21632348 2009-4-25 9:38:27     小析331
2 13974509 2009-4-19 15:15:07    小雨卓 表 i_trade
id      i_trade_id   i_seller_nick   i_buyer_nick    i_trade_title    i_price  i_trade_endtime        i_trade_payment    i_trade_status
11 1703486662    小析331           默默生存        琪拍牙签         0.10     2009-4-15 16:22:11      0.10               TRADE_FINISHED
12 1700844075    小析331           默默生存        常常签盒         0.10     1900-1-1 0:00:00 0.10               WAIT_BUYER_CONFIRM_GOODS
13 1719606103    小雨卓        monicashu       白色羊皮拖跟凉鞋   68.00    1900-1-1 0:00:00         78.00            WAIT_SELLER_SEND_GOODS
14 1716479309    小雨卓        leo5527         黑色OL必备凉鞋     280.00 2009-4-17 22:55:21 165.00            TRADE_FINISHED我想求出这样的记录:(求出今日的信息,包括浏览量,交易量(状态是成交的))    我的三表连接,结果查出的值不对。
时间段 浏览量(pv)顾客数(uv)   交易数   销售额   成交率
今日分析 147    461         46   61   9.98%
昨日分析 392    958         95   58   9.92%

解决方案 »

  1.   

    是挺麻烦的,而且楼主也没说清楚。
    --1、表之间的关系
    --2、下面这些字段数据怎么取?
    时间段 浏览量(pv)顾客数(uv)  交易数   销售额   成交率 
    今日分析 147   461         46   61   9.98% 
    昨日分析 392   958         95   58   9.92% 
      

  2.   

    我还真说不太清楚~i_daycount(流量表)的i_id和i_user(用户表)的i_user_id 关联i_user的nick和i_trade的nick 关联单个求我已经算出来了,就是不知道怎么组合到一起,或是一个查询查处来~/*查询今天浏览量,顾客数*/
    select i_pvcount 浏览量,i_uvcount 顾客数 
    from i_nb_DayCount
    where i_id='21632348' 
    and convert(varchar(10),i_date,120)=convert(varchar(10),getdate(),120)结果是: 浏览量 顾客数  
             1      1/*查询今天交易数,交易额*/
    select (case when (sum(i_tb_trade_num)) is null then 0 else sum(i_tb_trade_num) end ) 售出商品数,
       (case when sum(i_tb_trade_payment) is null then 0 else sum(i_tb_trade_payment) end) 销售额 
    from i_tb_Trade 
    where i_tb_trade_status = 'TRADE_FINISHED'
    and convert(varchar(10),i_tb_trade_end_time,120) = convert(varchar(10),getdate(),120)
    and i_tb_trade_seller_nick='小析331'结果是:售出商品数  销售额
             0        0.00最后还有个成交率: 交易数/浏览量 得出我想你们看看这个应该能看懂~
      

  3.   

    就是i_DayCount(今日流量) 这个是表名,怪我没写全~~别的字段名都没写太全,但是我写的sql语句都是全的~
      

  4.   

    --try:
    select 今日分析=convert(varchar(10),getdate() ,120),sum(i_pvcount) 浏览量,sum(i_uvcount) 顾客数 ,售出商品数=sum(i_tb_trade_num),销售额 =sum(i_tb_trade_payment),成交率=sum(i_tb_trade_num)*1.0/sum(i_pvcount) from i_nb_DayCount a
    left join i_user b on a.i_id=b.i_user_id
    left join i_trade c on b.i_user_nick=c.i_seller_nick
    where  datediff(dd,a.i_date,getdate())=0 and datediff(dd,c.i_trade_endtime,getdate())=0 and i_tb_trade_status = 'TRADE_FINISHED' 
      

  5.   

    --根据你的实际字段再改改。
    select 今日分析=convert(varchar(10),getdate() ,120),sum(i_pvcount) 浏览量,sum(i_uvcount) 顾客数 ,售出商品数=sum(i_tb_trade_num),销售额 =sum(i_tb_trade_payment),成交率=sum(i_tb_trade_num)*1.0/sum(i_pvcount) from i_nb_DayCount a
    left join i_user b on a.i_id=b.i_user_id
    left join i_trade c on b.i_user_nick=c.i_seller_nick
    where  datediff(dd,a.i_date,getdate())=0 and datediff(dd,c.i_trade_endtime,getdate())=0 and i_tb_trade_status = 'TRADE_FINISHED' 
    union all
    select 昨日分析=convert(varchar(10),getdate()-1 ,120),sum(i_pvcount) 浏览量,sum(i_uvcount) 顾客数 ,售出商品数=sum(i_tb_trade_num),销售额 =sum(i_tb_trade_payment),成交率=sum(i_tb_trade_num)*1.0/sum(i_pvcount) from i_nb_DayCount a
    left join i_user b on a.i_id=b.i_user_id
    left join i_trade c on b.i_user_nick=c.i_seller_nick
    where  datediff(dd,a.i_date,getdate()-1)=0 and datediff(dd,c.i_trade_endtime,getdate()-1)=0 and i_tb_trade_status = 'TRADE_FINISHED' 
      

  6.   

    不知道为什么 查出来 的都是null时段分析 浏览量   顾客数    售出商品数      销售额      成交率
    今日分析 NULL NULL NULL       NULL NULL我知道我可能错在哪了,我少写了一个where条件,第二个时间条件我没写,结果查出来的浏览量和顾客数特别大~~我在看看吧,谢谢你了~
      

  7.   

    把sum()前面加上一个isnull(sum(),0)处理,这样不会出现NULL.
      

  8.   

    表a:
    i_pvcount  i_uvcount  i_trade_num  i_tb_payment
    1413          406 1 165.00
    1413          406 1 336.00
    1413          406 1 60.00
    1413          406 1 166.00
    1413          406 1 166.00我要得到这样的结果,
    i_pvcount  i_uvcount  i_trade_num  i_tb_payment
    1413          406     5       893.00我这么写不对啊?
    select i_pvcount,i_uvcount,sum(i_trade_num),sum(i_tb_payment) from a 消息 8120,级别 16,状态 1,第 1 行
    选择列表中的列 'i_nb_DayCount.i_pvcount' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
    怎么写sql能得到我要的那样的结果呢?(后两列是累加出来的)
      

  9.   

    select i_pvcount,i_uvcount,sum(i_trade_num),sum(i_tb_payment) from a group by i_pvcount,i_uvcount
      

  10.   

    看来兄弟要多看看GROUP BY 的语法,12楼的正确