跨从其他表获得的多个范围的SQLite查询
我需要关于编写sqlite3查询的帮助。编辑-有一圈到多圈的数据,一圈的数据由开始时间和结束时间定义跨从其他表获得的多个范围的SQLite查询,sql,sqlite,android-sqlite,Sql,Sqlite,Android Sqlite,我需要关于编写sqlite3查询的帮助。编辑-有一圈到多圈的数据,一圈的数据由开始时间和结束时间定义 --laps table-- _id session_id lap lap_time start_time finish_time <other columns> --data table-- _id session_id time rpm <other columns> 我想获得每圈的圈数、圈数时间、最小rpm、平均GRPM和最大rpm,即data.time>lap
--laps table--
_id
session_id
lap
lap_time
start_time
finish_time
<other columns>
--data table--
_id
session_id
time
rpm
<other columns>
我想获得每圈的圈数、圈数时间、最小rpm、平均GRPM和最大rpm,即data.time>laps.start\u time&data.timeString query = "SELECT l.lap_num, l.lap_time, " +
"(SELECT min(d."+columnName+") FROM logged_data d WHERE d.time > l.start_time AND d.time < l.finish_time AND d.session_id = l.session_id), " +
"(SELECT avg(d."+columnName+") FROM logged_data d WHERE d.time > l.start_time AND d.time < l.finish_time AND d.session_id = l.session_id), " +
"(SELECT max(d."+columnName+") FROM logged_data d WHERE d.time > l.start_time AND d.time < l.finish_time AND d.session_id = l.session_id) " +
"FROM laps l WHERE l.session_id = " + session_id + ";";
除非任何人都可以重写它,否则我将添加此作为答案,这样它就不必每圈执行3次查询。如果我正确理解了您的问题,您可以将表连接在一起,并使用group by和多个聚合:
select l.lap, l.lap_time, min(d.rpm), avg(d.rpm), max(d.rpm)
from laps l
join data d on l.session_id = d.session_id
group by l.lap, l.lap_time
选择和连接是正确的,但每圈的数据应按从开始时间到结束时间的时间范围分组。如果我能方便地显示数据表,它会更清晰。我应该提到的是,这是一个一对多的关系,一圈,很多数据。