有两个表  一个是信息分类表,一个是用户反馈信息表。 
       
          其中信息分类表有个分类是投诉类,还有其他分类,跟此无关不累述。
          
          而公司呢有很多实体店,“用户反馈信息表”里有个字段是店的名字。还有一个字段是 此投诉是否为有效投诉。
          现在两个表联合,要求得出每个店的有效投诉类的信息和所有信息数量的的比(注意不是和所有投诉类的信息量的比)。     如何写?           

解决方案 »

  1.   

    有两个表 一个是信息分类表,一个是用户反馈信息表。  (两者通过 CategoryID 主外键关联,很常用的手法)
        
      其中“信息分类表”有个分类是投诉类,还有其他分类,跟此无关不累述。
        
      而公司呢有很多实体店,“用户反馈信息表”里有个字段是店的名字。有一个CategoryID表明信息的分类ID,还有一个字段是 IsReal  表明此投诉是否为有效投诉。
      现在两个表联合,要求得出每个店的有效投诉类的信息数量和所有信息数量的比(注意不是和所有投诉类的信息量的比)。 如何写?   
      

  2.   

    DECLARE @All int
    select @All = count(1) from 反馈表 
    join 信息分类表
    on 信息分类表.CategoryID = 反馈表.CategoryID 
    where IsReal=有效 and  CategoryID = 投诉类select 商店名, count(1),count(1) / @All from 反馈表 
    join 信息分类表
    on 信息分类表.CategoryID = 反馈表.CategoryID 
    where IsReal=有效 and  CategoryID = 投诉类
    group by 商店名
      

  3.   

    顶~~ 能用一条select搜索到吗
      

  4.   

    顶~~ 能用一条select搜索到吗
      

  5.   

    说的挺复杂的,不太明白意思·有些复杂的不要硬用sql做到,借助代码会更清楚些
    create table feedback
    (
    id INT IDENTITY(1,1) primary key not null,
    shopName varchar(50) null,
    isValid tinyint default(0),
    classID INT NOT null
    )
    go
    CREATE TABLE class(id INT IDENTITY(1,1) primary NULLnot null,className VARCHAR(50) NULL)
    GO
    INSERT INTO class SELECT '投诉类'INSERT INTO feedback SELECT 'shop1',1,1
    INSERT INTO feedback SELECT 'shop1',0,1
    INSERT INTO feedback SELECT 'shop1',1,1
    INSERT INTO feedback SELECT 'shop2',1,1
    INSERT INTO feedback SELECT 'shop1',1,1
    INSERT INTO feedback SELECT 'shop2',1,1
    INSERT INTO feedback SELECT 'shop2',1,1
    INSERT INTO feedback SELECT 'shop1',1,1
    INSERT INTO feedback SELECT 'shop3',1,1
    INSERT INTO feedback SELECT 'shop1',0,1
    INSERT INTO feedback SELECT 'shop2',1,1
    INSERT INTO feedback SELECT 'shop3',1,1
    SELECT shopname,比例=(COUNT(1)/(SELECT CAST(COUNT(1) AS FLOAT) FROM feedback WHERE shopName=o.shopName)) FROM feedback AS o WHERE isvalid=1 AND classID=(SELECT classid FROM class WHERE classname='投诉类') GROUP BY shopname