sql - How to find the most and least used keys? -


i have data in table:

insert videos values(20,'v1','kidnap','crime'); insert videos values(20,'v2','abuse','crime'); insert videos values(20,'v3','robbery','crime'); insert videos values(20,'v4','murder','crime'); insert videos values(20,'v5','political','political'); insert videos values(20,'v6','political','political'); insert videos values(20,'v7','political','political'); insert videos values(20,'v8','political','political'); insert videos values(20,'v9','social','social'); insert videos values(19,'v1','kidnap','crime'); insert videos values(19,'v2','abuse','crime'); insert videos values(19,'v3','robbery','crime'); insert videos values(19,'v4','murder','crime'); insert videos values(19,'v5','political','political'); insert videos values(19,'v6','political','political'); insert videos values(19,'v7','political','political'); insert videos values(19,'v8','political','political'); insert videos values(29,'v1','kidnap','crime'); insert videos values(29,'v2','abuse','crime'); insert videos values(29,'v3','robbery','crime'); 

from above 19, 20 , 29 key values. want find keys having min , max number of values along keys.

here key 29 has fewest values (3) , key 20 has values (9).

how can identify least , used keys values?

if don't have ties can use keep dense_rank, or 2 versions of in case, using first , last:

select min(id) keep (dense_rank first order count(*)) id_with_fewest,   max(id) keep (dense_rank last order count(*)) id_with_most videos group id;  id_with_fewest id_with_most -------------- ------------             29           20 

if have ties can decide how order them adding clause order by - order count(*), id.

this method won't allow 2 results if there tie though. if need can use inine view. adding data there's tie lowest count:

insert videos values(30,'v1','kidnap','crime'); insert videos values(30,'v2','abuse','crime'); insert videos values(30,'v3','robbery','crime'); 

minimum:

select id (   select id, dense_rank() on (order count(*)) rnk   videos   group id ) rnk = 1;          id ----------         30         29 

maximum:

select id (   select id, dense_rank() on (order count(*) desc) rnk   videos   group id ) rnk = 1;          id ----------         20 

Comments

Popular posts from this blog

yii2 - Yii 2 Running a Cron in the basic template -

asp.net - 'System.Web.HttpContext' does not contain a definition for 'GetOwinContext' Mystery -

mercurial graft feature, can it copy? -