一个简单的点评系统,有2个表,product表 和 review表。
product表存放产品信息,review表存放点评信息。
现在希望找到,每个品牌下,被点评次数最多的产品ID。product表 结构 (每个产品一条记录)
product_id | brand_id | other product info......review表 结构 (每条点评一条记录)
review_id | product_id | other review info......

解决方案 »

  1.   

    SELECT P.PRODUCT_ID,P.BRAND_ID,MAX(BRAND_COUNT) MAX_BRAND WHERE (
    SELECT P.PRODUCT_ID,P.BRAND_ID,COUNT(*) BRAND_COUNT 
    FROM PRODUCT P,REVIEW R WHERE P.PRODUCT_ID=R.PRODUCT_ID GROUP BY P.PRODUCT_ID,P.BRAND_ID)
    GROUP BY P.PRODUCT_ID,P.BRAND_ID
      

  2.   

    :) try it ..
    select distinct
           tt.brand_id,
           first_value(tt.product_id) over(partition by tt.brand_id order by tt.count_pros desc)
      from (
            select p.brand_id,
                   p.product_id,
                   count(r.review_id) as count_pros
              from product p,
                   review r
             where p.product_id = r.product_id
             group by p.brand_id,
                      p.product_id
           )tt;