mysql - 来自 max() 的 MySQL 计数结果
问题描述
我有一个 MySQL 表,用于跟踪进出该位置的库存扫描。像这样的示例数据:
bar_code_id,scan_type,scan_timestamp
038755,in,"2020-03-19 16:58:18"
038755,out,"2020-03-10 12:51:47"
001548,in,"2020-03-06 14:50:41"
012170,in,"2020-03-06 14:50:28"
020166,in,"2020-03-06 14:49:48"
022908,in,"2020-03-06 14:49:07"
012169,out,"2020-03-02 11:48:43"
020182,out,"2020-03-02 11:48:24"
047270,in,"2020-01-29 16:54:18"
020166,out,"2020-01-20 11:43:44"
012170,out,"2020-01-20 11:43:32"
022908,out,"2020-01-20 11:43:23"
001548,out,"2020-01-20 11:43:16"
016852,in,"2020-01-20 09:42:07"
020182,in,"2020-01-20 09:42:02"
012172,out,"2020-01-14 12:56:00"
012172,in,"2020-01-14 11:06:22"
001548,in,"2020-01-14 10:46:47"
010606,in,"2020-01-14 10:46:46"
012169,in,"2020-01-14 10:46:45"
020166,in,"2020-01-14 10:46:45"
010054,in,"2020-01-13 14:59:50"
012167,in,"2020-01-13 14:58:33"
020175,out,"2020-01-09 12:16:16"
023260,in,"2020-01-07 12:01:12"
038755,in,"2020-01-06 09:15:23"
我正在尝试创建一个查询,该查询将显示建筑物内的当前号码。我可以使用以下方法找到每个资产的最新扫描:
select bar_code_id, max(scan_timestamp)
from scans
group by bar_code_id
order by bar_code_id
给出以下结果:
bar_code_id,timestamp
001548,"2020-03-06 14:50:41"
010054,"2020-01-13 14:59:50"
010606,"2020-01-14 10:46:46"
012167,"2020-01-13 14:58:33"
012169,"2020-03-02 11:48:43"
012170,"2020-03-06 14:50:28"
012172,"2020-01-14 12:56:00"
016852,"2020-01-20 09:42:07"
020166,"2020-03-06 14:49:48"
020175,"2020-01-09 12:16:16"
020182,"2020-03-02 11:48:24"
022908,"2020-03-06 14:49:07"
023260,"2020-01-07 12:01:12"
038755,"2020-03-19 16:58:18"
047270,"2020-01-29 16:54:18"
但也无法弄清楚如何显示扫描类型。理想情况下,我希望能够计算最后一次扫描“进入”的项目数量以及项目总数。
任何指针?
编辑
我试图只查看每个 bar_code 的最新扫描,然后计算 scan_type 为“in”的数字
所以对每个 bar_code 的最新扫描是:
bar_code_id,scan_type,scan_timestamp
001548,in,2020-03-06 14:50:41
010054,in,2020-01-13 14:59:50
010606,in,2020-01-14 10:46:46
012167,in,2020-01-13 14:58:33
012169,out,2020-03-02 11:48:43
012170,in,2020-03-06 14:50:28
012172,out,2020-01-14 12:56:00
016852,in,2020-01-20 09:42:07
020166,in,2020-03-06 14:49:48
020175,out,2020-01-09 12:16:16
020182,out,2020-03-02 11:48:24
022908,in,2020-03-06 14:49:07
023260,in,2020-01-07 12:01:12
038755,in,2020-03-19 16:58:18
047270,in,2020-01-29 16:54:18
然后输入'in'的那些是:
bar_code_id,scan_type,scan_timestamp
001548,in,2020-03-06 14:50:41
010054,in,2020-01-13 14:59:50
010606,in,2020-01-14 10:46:46
012167,in,2020-01-13 14:58:33
012170,in,2020-03-06 14:50:28
016852,in,2020-01-20 09:42:07
020166,in,2020-03-06 14:49:48
022908,in,2020-03-06 14:49:07
023260,in,2020-01-07 12:01:12
038755,in,2020-03-19 16:58:18
047270,in,2020-01-29 16:54:18
给出11的答案。
我使用 max(scan_timestamp) 的 sql 查询不包括 scan_type,因此无法计算在内。如果我尝试包含这个,那么 max 函数显示的不仅仅是最新的扫描
select bar_code_id, max(scan_timestamp) as timestamp, scan_type
from scans
group by bar_code_id, scan_type
bar_code_id,timestamp,scan_type
038755,"2020-03-19 16:58:18",in
020166,"2020-01-20 11:43:44",out
012170,"2020-01-20 11:43:32",out
022908,"2020-01-20 11:43:23",out
001548,"2020-01-20 11:43:16",out
016852,"2020-01-20 09:42:07",in
020182,"2020-01-20 09:42:02",in
012172,"2020-01-14 12:56:00",out
012172,"2020-01-14 11:06:22",in
001548,"2020-03-06 14:50:41",in
010606,"2020-01-14 10:46:46",in
038755,"2020-03-10 12:51:47",out
012169,"2020-01-14 10:46:45",in
020166,"2020-03-06 14:49:48",in
010054,"2020-01-13 14:59:50",in
012167,"2020-01-13 14:58:33",in
020175,"2020-01-09 12:16:16",out
023260,"2020-01-07 12:01:12",in
012170,"2020-03-06 14:50:28",in
022908,"2020-03-06 14:49:07",in
012169,"2020-03-02 11:48:43",out
020182,"2020-03-02 11:48:24",out
047270,"2020-01-29 16:54:18",in
解决方案
我不知道这是否真的是你想要的,但我有这个要求:
SELECT bar_code_id, MAX(scan_timestamp) as timetamps, scan_type, COUNT(scan_type) as number_of_items, (SELECT COUNT(id) from scans) as total
FROM scans
WHERE scan_type = 'in'
GROUP BY bar_code_id
ORDER BY bar_code_id
这是我测试此请求的链接:http ://sqlfiddle.com/#!9/0da168/19
如果您对我的回答有任何疑问,我随时待命。
推荐阅读
- r - 从版本 14 之前的 Stata 文件将 .dta 文件读入 R 时如何处理编码?
- c# - Schema.ini 文件位置
- python - xarray 创建与另一个文件具有相同纬度/经度网格的新数据集
- ios - 即使在#import "AIRGoogleMapOverlay.h" 之后在 AIRGoogleMapOverlayManager 中使用未声明的标识符 'AIRGoogleMapOverlay'
- javascript - 如何在 node.js 中重新启动程序
- java - 主机 IP 绑定失败
- c++ - 无法从模板基类导入 typedef
- c# - 通过 REST Api 查询 Twilio 调试器日志
- python - 如何以块的形式旋转现有数据框?
- javascript - 无法使用ajax读取未定义的属性'0'来获取json数据