【问题标题】:MySQL: ORDER BY stat / age?MySQL:按统计/年龄排序?
【发布时间】:2010-01-07 21:29:58
【问题描述】:
我的产品表中有一个名为 product_stat 的 int 字段,每次查看产品时都会递增。我还有一个名为 product_date_added 的 日期 字段。
为了计算出产品每天获得的平均访问量,您需要使用当前日期和添加产品的日期来计算产品存在的天数。然后将产品统计信息除以它已存在的天数,以获得每天的平均访问量。
好的,但我想做的是选择一些产品并按每天访问次数订购它们DESC
我该怎么做?
谢谢!!!
【问题讨论】:
标签:
sql
mysql
sql-order-by
【解决方案1】:
这样的事情应该可以解决问题,使用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)”。
【解决方案2】:
你会想要这样的东西:
SELECT product_name,
product_stat / datediff(now(), product_date_added) as 'VisitPerDay'
FROM product
ORDER by VisitPerDay DESC