mysql - 分组行时选择MySQL中最旧的时间戳
问题描述
这是我当前的查询:
SELECT product,
SUM(price) AS revenue,
COUNT(*) AS sales,
timestamp
FROM payments
WHERE status = 'Completed'
OR status = 'Pending'
OR status = 'Canceled_Reversal'
GROUP BY product
一切都在正常工作,除了timestamp
列。
该列显示收到付款的日期/时间。我希望它显示购买每种产品的最后日期。现在无论我改变什么,它似乎都显示最旧的......
解决方案
尝试MAX(timestamp)
如下选择。您应该使用聚合函数,例如SUM
,COUNT
或对于子句中未提及的MAX
每个选定列,否则查询变得可疑甚至可能非法,具体取决于 MySql only_full_group_by选项。在您的情况下,它只是从任意行中选择。GROUP BY
timestamp
SELECT product,
SUM(price) AS revenue,
COUNT(*) AS sales,
MAX(timestamp) as timestamp
FROM payments
WHERE status = 'Completed'
OR status = 'Pending'
OR status = 'Canceled_Reversal'
GROUP BY product
推荐阅读
- macos - 使 etc/resolv.conf 使用辅助 dns 或旋转
- freeglut - 函数 _fgError oglx_application 中引用的错误 LNK2019 未解析的外部符号 __imp____iob_func
- python - python - 如何在python中对具有两个或多个变量的数据框使用列表理解?
- cypress - 赛普拉斯无法启动 Windows
- c++ - 达到容量时的向量元素重复
- amazon-web-services - 无法在 AWS cloud9 中设置临时凭证
- nlp - 单词映射到 0 的 NLP 填充向量
- r - 动态左侧菜单向下而不是向右列出项目
- arrays - 在 JSON 的另一个主列表下添加一个列表
- webpack - Webpack 作为简单的网络服务器