如何从结果集中获取分组查询数据?

时间:2013-04-19 10:37:35

标签: iphone ios sql sqlite fmdb

我想从sqlite中的表中获取分组数据。例如,表格如下:

Name  Group  Price
a     1      10
b     1      9
c     1      10
d     2      11
e     2      10
f     3      12
g     3      10
h     1      11

现在我希望获取按组列分组的所有数据,每个组在一个数组中,即

array1 = {{a,1,10},{b,1,9},{c,1,10},{h,1,11}}; 
array2 = {{d,2,11},{e,2,10}}; 
array3 = {{f,3,12},{g,3,10}}.

因为我需要这些2维数组来填充分组表视图。 sql语句可能是NSString *sql = @"SELECT * FROM table GROUP BY Group";但是我想知道如何从结果集中获取数据。我正在使用FMDB。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

使用普通的SELECT语句从sql获取数据,按组和名称排序:

SELECT * FROM table ORDER BY group, name;

然后在代码中,构建数组,切换到在组ID更改时填充下一个数组。

答案 1 :(得分:0)

让我清楚一下GroupBy。您可以对数据进行分组,但该时间需要组功能在其他列上。 例如表中列出了有性别组平均分的男生和女生。女性组,所以我们可以按性别分组这个表,它将返回两组。现在我们需要对结果列执行一些操作。 例如每组的最大标记或平均标记

在您的情况下,您想要分组,但在价格列上需要什么样的操作? 例如以下查询将返回具有最高价格的组。

SELECT Group,MAX(Price) AS MaxPriceByEachGroup FROM TABLE GROUP BY(group)