otherwise it will be calculated based on the density. If we enable dbms_stats trace when gathering hybrid histogram. We get the following DBMS_STATS: SELECT SUBSTRB (DUMP (val, 16, 0, 64), 1, 240) ep, freq, cdn, ndv, (SUM (pop) OVER ()) popcnt, (SUM (pop * freq) OVER ()) popfreq, SUBSTRB (DUMP (MAX (val) OVER (), 16, 0, 64), 1, 240) maxval, SUBSTRB (DUMP (MIN (val) OVER (), 16, 0, 64), 1, 240) minval FROM (SELECT val, freq, (SUM (freq) OVER ()) cdn, (COUNT ( * ) OVER ()) ndv, (CASE WHEN freq > ( (SUM (freq) OVER ()) / 15) THEN 1 ELSE 0 END) pop FROM (SELECT /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring xmlindex_sel_idx_tbl no_substrb_pad */ "ID" val, COUNT ("ID") freq FROM "SYS"."T1" t WHERE "ID" IS NOT NULL GROUP BY "ID")) ORDER BY valDBMS_STATS: > cdn 100, popFreq 28, popCnt 4, bktSize 6.6, bktSzFrc .6 DBMS_STATS: Evaluating hybrid histogram: cht.count 15, mnb 15, ssize 100, min_ssize 2500, appr_ndv TRUE, ndv 20, selNdv 0, selFreq 0, pct 100, avg_bktsize 7, csr.hreq TRUE, normalize TRUE Average bucket size is 7. Oracle considers value as popular when correspoindg endpoint repeat count is greater than or equval average bucket size. Also in our case density is (crdn- popfreq)/((NDV- popCnt)*crdn)=(100-28)/((20-4)*100)= 0.045. If we enable 10053 trace event you can clearly see columns and tables statistics. Therefore “(value,frequency)” will be as t1.j1 popular frequency calculated 0 N 4.5 density*num_rows 1 N 4.5 density*num_rows 2 Y 7 endpoint_repeat_count 3 N 4.5 density*num_rows 4 N 4.5 density*num_rows 5 N 4.5 density*num_rows 6 N 4.5 density*num_rows 7 Y 7 endpoint_repeat_count 8 N 4.5 density*num_rows 9 N 4.5 density*num_rows