2015-09-18 98 views
0

我要計算在SQLite的查詢日期之間的一些價值觀的百分比。SQLite的GROUP BY

這行看起來怎麼樣

customerId, sex, timeStamp, item 

我的代碼

String query = "SELECT *, ROUND((count(sex)*100.0)/(SELECT count(sex) FROM salesTable where timeStamp BETWEEN '"+startdate+"' AND '"+enddate+"'),2) AS '"+PERCENTAGE+"' FROM salesTable where timeStamp BETWEEN '"+startdate+"' AND '"+enddate+"' GROUP BY sex ORDER BY percentage DESC" ; 

我的問題是,例如一名男顧客買3個*手機將存儲這樣

  • 男顧客,男,時間戳,電話
  • 男定製呃,男,時間戳,電話
  • 男顧客,男,時間戳,電話

在這個例子中timeStamp's是一樣的,因爲在那裏,同時銷售的手機。由於其他原因,即使它們屬於一起,我也必須分開存儲所有內容。

現在可以說,一個女客戶買入2個*電話。然後我們有

  • 男顧客,男,時間戳,電話
  • 男顧客,男,時間戳,電話
  • 男顧客,男,時間戳,電話
  • 女顧客,女,時間戳,電話
  • 女顧客,女,時間戳,電話

我想要得到的是50%的男性和50%女性。我確定它很容易做到,但我堅持下去。我也試過GROUP BY這個性別,的timeStamp

String query = "SELECT *, ROUND((count(sex)*100.0)/(SELECT count(sex) FROM salesTable where timeStamp BETWEEN '"+startdate+"' AND '"+enddate+"'),2) AS '"+PERCENTAGE+"' FROM salesTable where timeStamp BETWEEN '"+startdate+"' AND '"+enddate+"' GROUP BY sex, timeStamp ORDER BY percentage DESC" ; 

末,但沒有奏效

我用的是性別和值來填充它的機器人會的ListView這樣

  • 男50%
  • 女性50%
+0

這是工作的罰款在MySQL –

+0

你得到50/50? – ORY

+0

不,但你想用50/50達到什麼目的? –

回答

0

嘗試

select sex, count(distinct customerId) from salesTable group by sex; 

這會給後面兩排,例如

F|3 
M|1 

這給出了女性和男性的總數。從那裏你可以計算百分比。

+0

謝謝,但這對我不起作用,因爲如果同一客戶在不同的日期/時間購買東西,它將不會計數。我甚至無法使用timeStamp來區分,因爲值有時會在一秒後插入,因爲它們是逐個插入的。也許是因爲Android模擬器有點慢。 – ORY

+0

那麼,如果你不能區分相同的時間戳或customerId字段,我不知道你將如何唯一標識客戶!如果兩個不同的男人同時購買會怎麼樣?你需要能夠區分他們。 –

+0

兩個不同的人在同一時間是不可能的。但也許我可以在某種程度上使用。時間戳存儲爲unix時間戳。如果用戶速度非常快,則需要大約3-4秒才能插入下一個Sell。有沒有辦法與2+和2-分組或區分?我意思是在 – ORY