首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按时间和名称的SQL语句

按时间和名称的SQL语句
EN

Stack Overflow用户
提问于 2020-10-24 19:12:27
回答 2查看 47关注 0票数 0

我正在为如何解决sql和(php)的问题而苦苦挣扎。

我有一条生产线,在这条生产线上,当每件产品通过生产线上的机器工具工位时,都会被扫描。由于生产线上有一堆maschine工具,因此每个产品都会通过其方式进行多次扫描。

这个扫描显然变得非常大,一个简单的例子如下:

代码语言:javascript
复制
maschinetoolnumber          Date/Time             Workpiece
20                          8:50                  46
30                          8:51                  56
40                          8:52                  34
30                          8:53                  46
70                          8:53                  77

我现在把它按时间排序,整条生产线在每一个地方都在工作。正如你所看到的,46号在20号后3分钟被上传到30号maschine工具中,因为它需要在30之前通过20。

我基本上想知道的是,在所有这些机器工具之间有多少工件。

在SQL中有没有办法只获得每个工件的最后一次扫描,这样我就可以很容易地根据maschine工具编号对它们进行排序,并查看最后通过了哪个maschine工具的数量?

此外,我还想整理出所有经过最后的机器工具站,因为它不再在线上。

所以我想在这里得到的结果是:

代码语言:javascript
复制
maschinetoolnumber          Date/Time             Workpiece

30                          8:51                  56
40                          8:52                  34
30                          8:53                  46
70                          8:53                  77

编号为20的46号现在已经离开了,因为它已经超过了编号30。

EN

回答 2

Stack Overflow用户

发布于 2020-10-24 20:54:34

您可以从以下内容开始:

代码语言:javascript
复制
SELECT Workpiece, max(maschinetoolnumber) FROM `tablename` group by Workpiece

这将返回每个工件经过的最高maschinetoolnumber编号。

票数 0
EN

Stack Overflow用户

发布于 2020-10-24 20:59:37

如果我理解正确的话,您想要的是自上次看到工件以来的行数。如果是这样,那么:

代码语言:javascript
复制
select t.*,
       (seqnum - lag(seqnum) over (partition by workpiece order by datetime) - 1) as num_between
from (select t.*, row_number() over (order by datetime) as seqnum
      from t
     ) t;

实际上,我可以将其解释为数据中有多少工件。如果是这样的话,那么:

代码语言:javascript
复制
select count(distinct workpiece)
from t;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64512737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档