SELECT  top 20 ht.HouseTypeName '房屋类型',h.Qu '区域',st.StreetName '街道名称',COUNT(Dealid) '套数', sum(totalprice) '总价' , sum(mianji) '总面积' , avg(price) '平均价格'
FROM deals AS d
INNER JOIN StreetInsert si ON d.HouseID = si.HouseID
INNER JOIN StreetTable st ON si.StreetID =  st.streetID
INNER JOIN Houses h ON d.HouseID = h.HouseID AND h.housetypeid in(2,4)--公寓和别墅
inner join HouseType ht on ht.TypeID=h.HouseTypeID
WHERE DATENAME(YEAR,BuyTime)=2007 and DATENAME(MONTH,BuyTime)=9
GROUP BY h.Qu,ht.HouseTypeName,st.StreetName
order by COUNT(DealID) desc
公寓和别墅
如何查询出前10名是公寓,然后是别墅,而且速度有点慢

解决方案 »

  1.   

    Admin表(内部管理人员表):name(姓名),password(密码),id(自增id),adminlevel(权限等级)对应adminLevel表的adminID字段。adminLevel表(权限表):adminName(权限名称),adminID(权限等级)Agencys表(中介公司表):AgencyID(自增ID),AgencyName(中介公司名称)CardType表(买卖用户身份表)Citys表(买卖用户户籍表):CountryID(对应County表的CountryID字段)Country表(买卖用户国籍表)Deals表:
    DealID(自增ID),
    HouseID(对应Housees表的HouseID字段),
    SellID(对应Peoples表的PeopleID,卖方ID,针对于二手交易),
    BuyID(对应Peoples表的PeopleID,买方ID),
    BuyTime(购买时间),
    CheckTime同BuyTime,
    Price(单价),TotalPrice(总价),AgencyID(中介ID,对于Agencys表的AgencyID字段),
    HouseNumber(房产证号)Houses表:
    HouseID(自增ID),
    Qu(区县),lu(路),Nong(弄),Hao(号),Shi(室)
    MianJi(面积),XiangMu(项目名),HouseTypeID(房屋类型,对应HouseType表的TypeID),
    FirstHandID(判断一二手),Address(地址)HouseType表(房屋类型表):TypeID(自增ID),HouseTypeName(类型名称)Peoples表(买卖客户表):
    CardTypeID(对应CardType表的CardTypeID字段),
    CountryID(对应Country表的CountryID字段),
    StateID(对应States表的StateCode字段),
    CityID(对应Citys表的CityCode字段),States表(买卖客户籍贯表)StreetTable表(街道名称表):quID(对应Qu表的quID字段)StreetInsert表(街道信息表):
    HouseID(对应Houses表的HouseID字段),
    StreetID(对应StreetTable表的StreetID字段)
    LinJinFangXiang表(邻近街道方向)LinJinStreet表(邻近街道):
    StreetID(对应StreetTable表的SteetID字段),
    LinJinStreetID(基于该表StreetID周围的街道,对应StreetTable表的SteetID字段),
    FangXiangID(对应LinJinFangXiang表的IDD字段)。
      

  2.   

    字太多,头大
    考虑下先取top 10的公寓,再取top 10的别墅,然后union all?
      

  3.   

    一共20??前10是公寓,后10 是别墅??那只好分别TOP10了
      

  4.   

    分开写两个top10,union all起来。
      

  5.   

    union all、
    我的order by 按排名的,这样排出来的顺序不行
      

  6.   

    就在虚拟个排序字段。select *
    from(
    select top 10 *,1 as px from a
    union all
    select top 10 *,0 as px from b 
    )t
    order by px,...
      

  7.   

    SELECT  top 10 ht.HouseTypeName '房屋类型',h.Qu '区域',st.StreetName '街道名称',COUNT(Dealid) '套数', sum(totalprice) '总价' , sum(mianji) '总面积' , avg(price) '平均价格'
    FROM deals AS d
    INNER JOIN StreetInsert si ON d.HouseID = si.HouseID
    INNER JOIN StreetTable st ON si.StreetID =  st.streetID
    INNER JOIN Houses h ON d.HouseID = h.HouseID AND h.housetypeid=2--公寓和别墅
    inner join HouseType ht on ht.TypeID=h.HouseTypeID
    WHERE DATENAME(YEAR,BuyTime)=2007 and DATENAME(MONTH,BuyTime)=9
    GROUP BY h.Qu,ht.HouseTypeName,st.StreetName
    union all
    SELECT  top 10 ht.HouseTypeName '房屋类型',h.Qu '区域',st.StreetName '街道名称',COUNT(Dealid) '套数', sum(totalprice) '总价' , sum(mianji) '总面积' , avg(price) '平均价格'
    FROM deals AS d
    INNER JOIN StreetInsert si ON d.HouseID = si.HouseID
    INNER JOIN StreetTable st ON si.StreetID =  st.streetID
    INNER JOIN Houses h ON d.HouseID = h.HouseID AND h.housetypeid=4--公寓和别墅
    inner join HouseType ht on ht.TypeID=h.HouseTypeID
    WHERE DATENAME(YEAR,BuyTime)=2007 and DATENAME(MONTH,BuyTime)=9
    GROUP BY h.Qu,ht.HouseTypeName,st.StreetName
    order by COUNT(DealID) desc  没法做两个order by