MySQL:ORDER BY stat / age?

时间:2010-01-07 21:29:59

标签: sql mysql sql-order-by

我的产品表中有一个名为product_stat int 字段,每次查看产品时该字段都会递增。我还有一个名为product_date_added日期字段。

为了计算产品每天的平均访问量,您需要使用当前日期和产品添加日期来计算产品存在的天数。然后将产品统计除以其存在的天数以获得每日平均访问量。

好的,但我想要做的是选择一些产品并按每日访问次数 DESC

订购

我该怎么做?

感谢!!!

2 个答案:

答案 0 :(得分:5)

这样的事情可以解决问题,使用DATEDIFF获取两个日期之间的差异,然后将product_stat列除以该差异。

SELECT 
    p.*, 
    p.product_stat/DATEDIFF(CURDATE(),p.product_date_added) as visits_per_day
FROM products p
ORDER BY visits_per_day DESC

虽然注意到DATEDIFF仅在MySQL 4.1.1中出现。如果您使用的是早期版本,则应改为使用“TO_DAYS(CURDATE()) - TO_DAYS(p.product_date_added)”。

答案 1 :(得分:5)

你会想要这样的东西:

SELECT product_name, 
product_stat / datediff(now(), product_date_added) as 'VisitPerDay'
FROM product
ORDER by VisitPerDay DESC