我是一个正在做项目的学生,我必须使用SQLite,但是我是SQLite的新手。我在下面描述了我的问题。
我有一个表格(包含60000行),其形式如下所示。
Date_Time Country_City Temperature
4-10-2012 12:10:10 USA_NYC 20
4-10-2012 12:10:10 USA_LA 17
4-10-2012 12:10:10 USA_DC 19
4-10-2012 12:40:10 USA_LA 18
4-10-2012 12:40:10 USA_DC 18
我必须对表进行排序和创建,如下所示,如果缺少数据(如在纽约市),则必须加载以前的数据(如果不是'NaN')。
Date_Time USA_NYC USA_LA USA_DC
4-10-2012 12:10:10 20 17 19
4-10-2012 12:40:10 20 18 18
能否请您告诉我如何创建它,可以进行排序和排序,但是我不知道如何在SQLite中这样创建。如有任何建议,我将不胜感激。
最佳答案
对于给定的时间戳和城市,以下查询获取该时间或该时间之前的最新温度:
SELECT Temperature AS USA_NYC
FROM mytable
WHERE Country_City = 'USA_NYC'
AND Date_Time LIKE '4-10-2012 %'
AND Date_Time <= '4-10-2012 12:40:10'
AND Temperature IS NOT NULL
ORDER BY Date_Time DESC
LIMIT 1
(请注意,如果使用SQLite的supported date/time formats之一,则可以简化
Date_Time
比较。)我们还获得了需要温度的所有时间戳:
SELECT DISTINCT Date_Time FROM mytable
现在,我们结合这两个查询来获取每个时间戳的NYC值:
SELECT timestamps.Date_Time,
(SELECT Temperature
FROM mytable tvalues
WHERE tvalues.Country_City = 'USA_NYC'
AND tvalues.Date_Time LIKE substr(timestamps.Date_Time, 1, 10) || '%'
AND tvalues.Date_Time <= timestamps.Date_Time
AND tvalues.Temperature IS NOT NULL
ORDER BY tvalues.Date_Time DESC
LIMIT 1) AS USA_NYC
FROM (SELECT DISTINCT Date_Time
FROM mytable) timestamps
练习中添加了
LA
和DC
列。 (不可能从Country_City
值自动生成这些列; SQLite没有数据透视表功能。)
关于sqlite - 在SQLite中排序,排序和创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12759542/