G
G?nter Jantzen
In the documentation
http://www.python.org/dev/doc/devel/whatsnew/node7.html is written
about itertools.groupby:
"""Like it SQL counterpart, groupby() is typically used with sorted
input."""
In SQL queries is the groupby clause not related to 'input order'.
This notion makes not much sense in SQL context.
SQL is based on relational Algebra. A SQL- table is based on an
unordered set of rows (implementation can be different, of course).
So the analogon of
----------------------
....
0 [2, 4, 6]
1 [7]
0 [8]
1 [9, 11]
0 [12, 14]------------------------
Say you have a table 'example' with only one column 'i'
_________________________
select * from example;
I
----
2
14
6
7
8
9
11
12
4
___________________________
the order of rows is not defined
Then you can group this table
____________________________________________
select count(i), mod(i,2) from example group by mod(i,2)
COUNT(I) | MOD(I,2)
---------+---------
6 | 0
3 | 1
___________________________________________
The result dos not depend on 'input order' or 'runs'
http://www.python.org/dev/doc/devel/whatsnew/node7.html is written
about itertools.groupby:
"""Like it SQL counterpart, groupby() is typically used with sorted
input."""
In SQL queries is the groupby clause not related to 'input order'.
This notion makes not much sense in SQL context.
SQL is based on relational Algebra. A SQL- table is based on an
unordered set of rows (implementation can be different, of course).
So the analogon of
----------------------
.... print key_val, list(it)import itertools
L = [2,4,6, 7,8,9,11, 12, 14]
for key_val, it in itertools.groupby(L, lambda x: x % 2):
....
0 [2, 4, 6]
1 [7]
0 [8]
1 [9, 11]
0 [12, 14]------------------------
Say you have a table 'example' with only one column 'i'
_________________________
select * from example;
I
----
2
14
6
7
8
9
11
12
4
___________________________
the order of rows is not defined
Then you can group this table
____________________________________________
select count(i), mod(i,2) from example group by mod(i,2)
COUNT(I) | MOD(I,2)
---------+---------
6 | 0
3 | 1
___________________________________________
The result dos not depend on 'input order' or 'runs'