2012-10-09 97 views
0

我是一名學生,正在做一個項目,我必須使用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 

我必須按如下所示對數據進行排序和創建,如果數據缺失,如NYC中的數據必須是'NaN'。如果所有行都包含'NaN'作爲單個時間戳記,則必須將其刪除。

Date_Time   USA_NYC USA_LA USA_DC 
4-10-2012 12:10:10 20  17  19 
4-10-2012 12:40:10 NaN  18  18 

你能告訴我如何創建它,我可以命令和排序,但我不知道如何在SQLite中這樣創建。我會很感激任何建議。

+0

@cl:請幫忙 – narendhrancs

回答

0

你的問題當然不是SQLite特有的,而是解決了正確的SQL查詢的表述。快速瀏覽一下你想實現的目標,我確信在普通的SQL-92中是可能的。

目前我不確定如果我發佈解決方案,是否可以回答作業。因此,我只想提示:查看子查詢(從...中選擇Date_Time,USA_NYC)並結合連接/外連接。

關於NaN值,我不確定你是否想要或者有NULL值。如果你真的需要一個'NaN'的字符串值,那麼你可以使用一個case結構來將NULL值轉換成'NaN'字符串。

我在哪裏遇到困難:如果您不知道預期哪些列(例如USA_NYC)預期會變得更復雜(請告訴我們是否是這種情況)。

0

首先,這些疑問得到所有可能的時間戳和城市價值:

SELECT DISTINCT Date_Time FROM mytable 
SELECT DISTINCT Country_City FROM mytable 

通過交叉連接的結果,我們得到了所有可能的組合(甚至那些不存在於表中)。然後,我們可以查找與外部存在的溫度值加盟:

SELECT t1.Date_Time, 
     t1.Country_City, 
     Temperature 
FROM ((SELECT DISTINCT Date_Time FROM mytable) 
     JOIN 
     (SELECT DISTINCT Country_City FROM mytable)) t1 
    LEFT JOIN mytable t2 
    ON t1.Date_Time = t2.Date_Time AND t1.Country_City = t2.Country_City 

結果看起來是這樣的:

t1.Date_Time  t1.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_NYC     <-- NULL 
4-10-2012 12:40:10 USA_LA   18 
4-10-2012 12:40:10 USA_DC   18 

獲取城市作爲列自動也不是沒有可能轉動功能,SQLite的不具有。