1
首先:感謝您的期待;你的時間表示讚賞!用幾列MAX()獲得整行
的一點是:
架構:爲myTable的
nonUniqueID YEAR MONTH DAY HOUR numericValue
1 2012 01 01 01 99.9
1 2012 01 01 02 65.2
1 2012 01 01 03 -88
7 2012 02 08 21 9.08
1 2012 01 01 09 99.913
1 2013 01 01 01 99.999999
基本上,這兩個值nonUniqueID
和numericValue
具有顆粒日期。
現在,我需要在整個數據庫中獲取單個最大日期。有了上面的數據,預期的結果是:
nonUniqueID YEAR MONTH DAY HOUR numericValue
1 2013 01 01 01 99.999999
因爲這是SQLite,我知道我最終不得不多次使用MAX()。順序必須是MAX(年)然後MAX(月)然後MAX(日)然後MAX(小時)。
基本上,查詢將這樣的工作(我只是不知道有足夠的瞭解SQL語法來創建查詢):
- 查找與最高年份
- 所有記錄從這組,發現所有與最高的月份
- 記錄從這組,找到全天最高
- 所有記錄從這組,找到所有記錄最高HOUR
- 返回該記錄
這裏是一個SQL,我改編自另一個StackExchange問題不起作用
Select * From (
Select max(YEAR) as Y FROM myTable
union
Select max(MONTH) as M FROM myTable
union
Select max(DAY) as D FROM myTable
union
Select max(HOUR) as H FROM myTable
) myTable;
返回
Y
-----
21
08
02
2013
比較這對進出料:
nonUniqueID YEAR MONTH DAY HOUR numericValue
1 2013 01 01 01 99.999999
它用4個值返回了4條記錄,而不是一條記錄。
有人可以幫我解決我的問題嗎?謝謝!
除了這個返回無論特定記錄的列值的其餘部分如何,每列最大值。如果我插入YEAR:2013,MONTH:01,DAY:01,HOUR:01,我將在2013年2月21日和2013年2月21日分別獲得一個月, 08 21:00在數據庫中。我已更新我的帖子以反映這一點。 – user1521764 2012-08-11 03:13:57
謝謝!這讓我更接近一個工作解決方案。我已經重新評估了性能需求(數據存儲的使用遠遠少於數據檢索),並重新編寫了我的數據存儲查詢,以將粒度數據轉換爲易於排序的時間戳。我使用的API爲我提供了數據格式(EG:y = 2012,m = 08 ...),並且以這種形式存儲數據比以我的原始查詢爲代價要容易得多做檢索。我會花時間在第一次正確存儲數據。再次感謝你的幫助! – user1521764 2012-08-12 00:28:08