2016-06-13 34 views
0

私はいくつかのクエリを試みたが、私のためにはうまくいかない、私は今週合計で重複しているsqliteテーブルからのリストビューでアプリケーションデータを表示する必要があります。sqliteを使用してテーブルから週単位の合計データを取得

問合せは、私はここ

  1. String selectQuery = "SELECT * FROM " + TABLE_APPDATA + " WHERE DATE(date_time) >= DATE('now', 'weekday 0', '-7 days')";

  2. "SELECT strftime('%Y-%W', date_time) as date_time, sum(app_data) FROM "+TABLE_APPDATA+ " GROUP BY date_time order by app_data desc"

Table app_data

------------------------------------------ 
app_uid | date_time | app_name | app_data| 
10118 | 12-6-2016 |Google App| 200  | 
10158 | 12-6-2016 | Youtube | 300  | 
10001 | 12-6-2016 | updater | 100  | 
10158 | 13-6-2016 | Youtube | 500  | 
------------------------------------------ 

を試してみましたDUPあなたはapp_data、つまりYoutube 800の合計を計算する必要があります。そのためのクエリはありがたいです。

答えて

0

あなたはstrtime(%W, date_time)でグループ化する必要があります。これはあなたに週番号を与え、それを使ってその週のすべてのレコードを取得し、sumを得ることができます。

+0

を、COL -1 CursorWindowからの行0を読み取れませんでした。カーソルがデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください。そして、date_timeが文字列形式になっているのですが、日付形式を変更する必要があります –

+1

これは、クエリを実行した後にカーソルから読み取ることに関連する全く異なる問題を指します。クエリが機能するかどうかを確認するには、sqlviewerを使用してデータベースを抽出し、クエリを実行します。 –

1

2番目のバージョンはかなり近いです。問題は列の命名です。あなたが列の別名を使用したい場合は、

SELECT strftime('%Y-%W', date_time) as date_time, sum(app_data) 
FROM "+TABLE_APPDATA+ " 
GROUP BY strftime('%Y-%W', date_time) 
ORDER BY app_data desc; 

それとも、それを任意の列とは別の名前を与える:これを試してみてください

SELECT strftime('%Y-%W', date_time) as yyyyww, sum(app_data) 
FROM "+TABLE_APPDATA+ " 
GROUP BY yyyyww 
ORDER BY app_data desc; 
+0

が最初に試行されましたCursorWindowから行0、列-1を読み取れませんでした。カーソルがデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください。 –

関連する問題