SQLite Group BY

时间:2015-09-18 12:09:53

标签: sqlite

我想计算SQLite查询中日期之间某些值的百分比。

这就是Rows的样子

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,电话
  • 男性顾客,男性,timeStamp,电话
  • 男性顾客,男性,timeStamp,电话

此示例中的timeStamp是相同的,因为同时销售的手机。由于其他原因,我必须将所有东西分开存放,即使它们属于一起。

现在让我们说女性顾客购买2 *手机。然后我们有

  • 男性顾客,男性,timeStamp,电话
  • 男性顾客,男性,timeStamp,电话
  • 男性顾客,男性,timeStamp,电话
  • 女顾客,女,timeStamp,电话
  • 女顾客,女,timeStamp,电话

我想得到的是50%的男性和50%的女性。我确定它很容易做到,但我坚持下去。我也尝试过GROUP BY sex,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" ;
最后但是没有工作

我使用性和值在Androids ListView中填充它,就像这样

  • 男性50%
  • 女性50%

1 个答案:

答案 0 :(得分:0)

尝试

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

这将返回两行,例如

F|3
M|1

这给出了女性和男性的总数。从那里你可以计算百分比。