这是Paul Graham如何描述Hacker
News的排名算法
:
新闻.YC的只是
(p-1)/(t + 2)^ 1.5
其中p =点,t =年龄(小时)
鉴于下表,我想在纯mySQL中执行此操作:
投票域的想法是可以取消投票。出于排名目的,vote = 0等于完全没有投票。(所有投票均为赞成,无表决权。)
问题是如何构建返回前N个postID(按Paul
Graham公式排序)的查询。总共大约有10万个帖子,因此,如果您认为对成绩进行缓存或需要其他任何内容,我很乐意听取有关此方面的建议。
(显然,这不是火箭科学,我当然可以弄清楚,但是我发现吃SQL早餐,午餐和晚餐的人可能会觉得不高兴。而且在StackOverflow上使用它似乎很有价值。)
相关问题:
未经测试:
SELECT x.*
FROM POSTS x
JOIN (SELECT p.postid,
SUM(v.vote) AS points
FROM POSTS p
JOIN VOTES v ON v.postid = p.postid
GROUP BY p.postid) y ON y.postid = x.postid
ORDER BY (y.points - 1)/POW(((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(x.timestamp))/3600)+2, 1.5) DESC
LIMIT n
问题内容: 为什么此查询不起作用? 在此示例中,我尝试在其他计算中使用my_num别名。这导致未知列“ my_num” 这是我正在尝试做的简化版本,但是基本上我想使用别名进行其他计算。我的计算要复杂得多,这就是为什么给它加上别名的原因,因为我以不同的方式重复了几次。 问题答案: 只需将您的重用别名包装为:
本文向大家介绍PHP实现排序堆排序(Heap Sort)算法,包括了PHP实现排序堆排序(Heap Sort)算法的使用技巧和注意事项,需要的朋友参考一下 算法引进: 在这里我直接引用《大话数据结构》里面的开头: 在前面讲到 简单选择排序 ,它在待排序的 n 个记录中选择一个最小的记录需要比较 n - 1 次,本来这也可以理解,查找第一个数据需要比较这么多次是正常的,否则如何知道他是最小的记录。
本文向大家介绍js实现常用排序算法,包括了js实现常用排序算法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了js实现常用排序算法,具体内容如下 1.冒泡排序 2.选择排序 3.插入排序 4.希尔排序 5.归并排序 6.快速排序 总结:算法效率比较: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍java实现折半排序算法,包括了java实现折半排序算法的使用技巧和注意事项,需要的朋友参考一下 折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。 折半排序算法示意图: 以
本文向大家介绍java实现快速排序算法,包括了java实现快速排序算法的使用技巧和注意事项,需要的朋友参考一下 1、算法概念。 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。 2、算法思想。 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序
本文向大家介绍java实现归并排序算法,包括了java实现归并排序算法的使用技巧和注意事项,需要的朋友参考一下 归并排序算法思想: 分而治之(divide - conquer);每个递归过程涉及三个步骤 第一, 分解: 把待排序的 n 个元素的序列分解成两个子序列, 每个子序列包括 n/2 个元素. 第二, 治理: 对每个子序列分别调用归并排序MergeSort, 进行递归操作 第三, 合并: 合