我正在尝试为 MTT(目标制造)编写一些软件。一个表包含有关目标的信息,另一个表用于跟踪数据点。
在最简单的形式中,表格的布局如下:
Table target
field pk_target int pk autoincrement
field timestamp double
field target double
field UCL double //upper control limit
field LCL double //lower control limit
Table dataPoint
field pk_dataPoint int pk autoincrement
field timestamp as double
field value as double
目标表将仅在需要时更新,可以是每月一次到每天一次或更多次。 dataPoint 表将每 4 小时更新一次。 我想进行一个结合两个表中数据的查询,以便列出 dataPoint 表中的每个条目以及 dataPoint 表中特定时间戳的目标表中的最新数据。
例如,假设目标表包含 2 个条目: pk_target=1,timestamp=1000,target=11,UCL=13,LCL=9 pk_target=2,timestamp=1200,target=10,UCL=12,LCL=8
假设 dataPoints 表包含 3 个条目:
pk_dataPoint=1,timestamp=1001,value=9.4
pk_dataPoint=2,timestamp=1125,value=9.7
pk_datapoint=3,timestamp=1420,value=10.1
所以我正在构建的查询应该返回如下结果集:
dataPoint.pk_DataPoint=1,dataPoint.timestamp=1001.dataPoint.value=9.4,target.target=11
dataPoint.pk_DataPoint=2,dataPoint.timestamp=1125.dataPoint.value=9.7,target.target=11
dataPoint.pk_DataPoint=3,dataPoint.timestamp=1420.dataPoint.value=10.1,target.target=10
请注意,在上面的示例数据集中,前 2 个条目的 target.target 为 11,因为目标的时间戳是目标表中最晚的,但仍小于 dataPoint 表中的时间戳条目。本质上是说“对于这个数据点,目标应该是由时间戳确定的‘X’”。
任何人都可以就如何完成此任务提供一些意见吗?
谢谢!
最佳答案
您可以使用相关子查询来做到这一点:
select dp.*,
(select target
from Target t
where t.timestamp <= dp.timestamp
order by t.timestamp desc
limit 1
) as target
from DataPoint dp;
这是假设最合适的数据是来自 Target 在 DataPoint 中的时间戳之前的最新数据。
关于涉及带有时间戳列的 2 个表的 Mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18849366/
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查
这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时
使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做
假设我有一个类A,里面有一些方法。假设stringmethodName是这些方法之一,我已经知道我想给它什么参数。它们在散列中{'param1'=>value1,'param2'=>value2}所以我有:params={'param1'=>value1,'param2'=>value2}a=A.new()a.send(methodName,value1,value2)#callmethodnamewithbothparams我希望能够通过传递我的哈希以某种方式调用该方法。这可能吗? 最佳答案 确保methodName是一个符号,而