home 首页 » 精彩日志 » 日志查看

使用NTILE()方便地生成tag云图

原文地址:http://www.objectivelyoriented.com/2008/04/ntile_easy_way_to_generate_tag.html

ringtail 译
 2008-04-29 00:40:18 

注1:中文翻译为简略版,欲知详情请看英文原版。

在Oracle中,使用NTILE函数可以优雅的生成标签云图。

SELECT name tag_name,
num_results_per_tag,
ntile($numFontSizesInCloud) over (ORDER BY num_results_per_tag) as font_size
FROM (SELECT name,
num_results_per_tag
FROM tag
ORDER BY num_results_per_tag DESC)
WHERE rownum <= :num_tags
ORDER BY name;


这个语句的作用是使所有的tag和该tag项的数目按tag分类,并按数目排序(所以最流行的tag在最前面)。可以通过:num_tags参数指定云图的tag数目。(注意:可以替换这个子句,使用行数来限制tag的数目。可以使用子查询来取回特定的tag集,例如,user-specific tags, page-specific tags, 等等)


在决定要取回多少tag后,使用NTILE函数把所有的tag放到一个或多个"buckets"中。多少个"buckets"取决于查询语句中$numFontSizesInCloud的值。

然后修改你的CSS确定字符大小或者想要赋予的类别名称。

注2:

NTILE 功能描述:将一个组分为"表达式"的散列表示,例如,如果表达式=4,则给组中的每一行分配一个数(从14),如果组中有20行,则给前5行分配1,给下5行分配2等等。如果组的基数不能由表达式值平均分开,则对这些行进行分配时,组中就没有任何percentile的行数比其它percentile的行数超过一行,最低的percentile是那些拥有额外行的percentile。例如,若表达式=4,行数=21,则percentile=1的有5行,percentile=2的有5行等等。(摘自:http://blog.chinaunix.net/u/29553/showart_542552.html oracle函数分析手册

收藏到网摘:

评论:共 
1
 条
发表评论:
大名:*
网址:   http://sitename
评论:*