2011-07-19 24 views
24

Tengo una tabla que tiene este aspecto:recuento SQLite, el grupo y el orden según el recuento

FOO BAR BAZ 
----+----+---- 
foo1 bar1 baz1 
foo2 bar3 baz2 
foo3 bar1 baz3 
foo4 bar1 baz4 
foo5 bar3 baz5 
foo6 bar1 baz6 
foo7 bar2 baz7 

Y como resultado me gustaría obtener el recuento de cuántas veces cada barra apareció en la mesa .. entonces, la salida que estoy buscando se ve así:

BAR COUNT 
-----+----- 
bar1 4 
bar3 2 
bar2 1 

¿Puedo hacer una consulta para algo como esto en SQLite? Supongo que debería ser bastante fácil, pero no soy un programador de SQL de ninguna manera, y solo necesito esta simple consulta como parte de un script de Python ... Gracias.

Respuesta

35
SELECT foo, count(bar) FROM mytable GROUP BY bar ORDER BY count(bar) DESC; 

El grupo por declaración le dice a las funciones agregadas que agrupen el resultado establecido por una columna. En este caso, "grupo por barra" dice contar el número de campos en la columna de la barra, agrupados por los diferentes "tipos" de la barra.

Una mejor explicación está aquí: http://www.w3schools.com/sql/sql_groupby.asp

+3

casi .. pero me tiene en el camino correcto. ¡Gracias! aquí hay una solución completa en caso de que alguien lo necesite: "SELECCIONAR bar, contar (bar) FROM mytable GROUP BY bar ORDER BY contar (bar) DESC" – pootzko

+2

En realidad, en lugar de repetir el conteo (barra) dos veces, debe usar el "AS" declaración: "SELECCIONE foo, count (bar) AS tot_bar_count FROM mytable GROUP BY bar ORDER BY tot_bar_count DESC;" –

Cuestiones relacionadas