TABLE => users
 id   |  category | views
  1   |  cat2     |  700
  2   |  cat1     | 3900   <== most views in cat1
  3   |  cat1     |  200
  4   |  cat1     |  800
  5   |  cat3     | 2900   <== most view from cat3
  6   |  cat1     |  800
  7   |  cat2     | 4900   <== most views from cat2
  8   |  cat1     |  900
  9   |  cat2     |  100
 10   |  cat2     |  100
// this is random table..//
my output :
 id   |  category | views
  2   |  cat1     |  3900   <== most views in cat1
  5   |  cat3     |  2900   <== most view from cat3
  7   |  cat2     |  4900   <== most views from cat2
my desired output :
 id   |  category | views
  7   |  cat2     |  4900   <== most views from cat2
  6   |  cat2     | 1000
  10   |  cat2    | 4000
  8   |  cat2     |  500
  5   |  cat3     |  2900   <== most view from cat3
  11   |  cat3     | 1000
  13   |  cat3     |  2500
  15   |  cat3     | 100
  14   |  cat3     |  500
i want to display rows from that category where id of max views is greater than 4 and if not then do not display that row in result,thereafter category which fullfills the above condition of id > 4 then display rows of that category in order of category wise but category whose max views is higher should show first and accordinly other
my sql code :
SELECT * 
FROM neww 
where category in (
 SELECT t1.category
 FROM neww t1 inner join (
   SELECT category,MAX(views) AS  max_view
   FROM neww 
   GROUP BY category
 ) t2 on t2.max_view = t1.views and  t1.id >= 4
) and id >= 4
order by category desc, views desc
 
    