Ada*_*dam 6 mysql sql database
我正在研究应用程序的Product Catalog模块Invoicing.
当用户创建新发票时,该product name字段应为自动填充字段,该字段显示产品目录中最近使用的产品.
如何在数据库中存储此"使用新近度/频率"?
我正在考虑添加一个新的字段recency,1每次使用该产品时都会增加,而1/(count of all products)当使用其他产品时,该字段会减少.然后使用此recency字段进行排序,但在我看来这不是最好的解决方案.
你能帮我解决一下这类问题的最佳做法吗?
小智 6
在products表中创建一个新列,last_used_on例如命名.它的数据类型应该是TIMESTAMP(Unix时代的MySQL表示).
好处:
资源:
嗯,实际上,你不是在谈论频率计算,而是谈论一个速率 - 尽管人们可以说频率也是速率.
频率意味着使用时间作为参考单位,并以赫兹(Hz = [1 /秒])测量.例如,假设您要查询去年产品的使用次数.
另一方面,比率是两个相关单位之间的比较.例如汇率美元/欧元 - 它们都是货币.如果比较发生在相同类型的两个术语之间,则结果是没有测量单位的数字:百分比.喜欢:50个苹果/ 273个苹果= 0.1832 = 18.32%
这就是说,我想你想计算出使用率:数量用途的产品的与数量关系惯例的所有产品.就像产品一样:usage rate of the product = 17 usages of the product / 112 total usages = 0.1517... = 15.17%.在自动填充中,您希望显示使用率大于给定百分比的产品(例如9%).
这很容易实现.在该products表中添加一列usages型的int或bigint与一个简单的产物每次使用时增加它的值.然后,当您想要获取最常用的产品时,只需应用此sql语句中的过滤器:
SELECT
id,
name,
(usages*100) / (SELECT sum(usages) as total_usages FROM products) as usage_rate
FROM products
GROUP BY id
HAVING usage_rate > 9
ORDER BY usage_rate DESC;
Run Code Online (Sandbox Code Playgroud)
这是一个小案例:
最后,新近度,频率和速率是三个不同的东西.
祝好运.