sqlite - 在SQLite中排序,排序和创建列

标签 sqlite

我是一个正在做项目的学生,我必须使用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


练习中添加了LADC列。 (不可能从Country_City值自动生成这些列; SQLite没有数据透视表功能。)

关于sqlite - 在SQLite中排序,排序和创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12759542/

相关文章:

database - Google BigQuery "bq show"命令返回 : sqlite3. 操作错误:数据库已锁定

iphone - iPhone 上 SQLite 中的临时表存储

javascript - 数据在函数中使用之前更改

java - 如何在 jar 文件中使用 SQLite 数据库?

ios - 尝试查看记录时,从结果类型为 'UITableViewCell *__strong' 的函数返回 'UITableView *' 的不兼容指针类型

python - 不能将 sqlite3 参数替换与 PRAGMA 一起使用?

python - Firefox 和 Python 上的 SQLite 管理器

sql - 使用 SQLite3 (Ruby) 的数据库没有插入

vb.net - SQLite 数据库文件放在网络文件夹中时无法打开

java - 如何在 .xml 中实现数据库内容并将其呈现在 ListView 中