¿Cómo obtengo una columna que es la suma de todos los valores antes de otra columna?¿Cómo calculo una SUM en ejecución en una consulta SQLite?
Respuesta
Puede hacerlo uniéndose a la mesa consigo mismo (realizando lo que se denomina Cartesian o cross join). Vea el siguiente ejemplo.
SELECT a.name, a.gdppc, SUM(b.gdppc)
FROM gdppc AS a, gdppc AS b WHERE b.gdppc <= a.gdppc
GROUP BY b.id ORDER BY a.gdppc;
Dado un cuadro que contiene los países y su PIB per cápita le dará un total acumulado de la cifra del PIB.
Democratic Republic of Congo|329.645|329.645
Zimbabwe|370.465|700.11
Liberia|385.417|1085.527
Burundi|399.657|1485.184
Eritrea|678.954|2164.138
Niger|711.877|2876.015
Central African Republic|743.945|3619.96
Sierra Leone|781.594|4401.554
Togo|833.803|5235.357
Malawi|867.063|6102.42
Mozambique|932.511|7034.931
...
Tenga en cuenta que esto puede ser una operación muy intensivo de los recursos, ya que si una tabla tiene N elementos se creará una tabla temporal con elementos N * N. No lo realizaría en una mesa grande.
Gracias. En su ejemplo, ¿cuál es el nombre TABLE? – Hugo
@Diomidis Spinellis: en realidad no es una combinación cruzada, sino más bien una [combinación triangular] (http://www.sqlservercentral.com/articles/T-SQL/61539/). –
Lo siento pero no entendí. En la declaración FROM ¿dónde debería escribir mi nombre TABLE? – Hugo
Tienes que hacer una suma en el campo que desea .... La consulta depende de la base de datos que está utilizando, Oracle le permite hacer esto:
select id, value, sum(value) as partial_sum over (order by id) from table
combinación cruzada soluciones como sugirieron Diomidis Spinellis tomar el tiempo O (N^2). Un CTE recursivo puede funcionar más rápido, si puede soportar el código intrincado.
Esto produce la misma salida que la suya.
WITH RECURSIVE running(id, name, gdppc, rt) AS (
SELECT row1._rowid_, row1.name, row1.gdppc, COALESCE(row1.gdppc,0)
FROM gdppc AS row1
WHERE row1._rowid_ = (
SELECT a._rowid_
FROM gdppc AS a
ORDER BY a.gdppc, a.name, a._rowid_
LIMIT 1)
UNION ALL
SELECT row_n._rowid_, row_n.name, row_n.gdppc, COALESCE(row_n.gdppc,0)+running.rt
FROM gdppc AS row_n INNER JOIN running
ON row_n._rowid_ = (
SELECT a._rowid_
FROM gdppc AS a
WHERE (a.gdppc, a.name, a._rowid_) > (running.gdppc, running.name, running.id)
ORDER BY a.gdppc, a.name, a._rowid_
LIMIT 1))
SELECT running.name, running.gdppc, running.rt
FROM running;
pedidos y las comparaciones se encargan de duplicados, COALESCE
está ahí para ignorar los valores NULL.
Si tiene un buen índice, este debería ser O (N log N). Como SQLite no es compatible con los cursores, una solución O (N) probablemente no exista sin depender de una aplicación externa.
- 1. ¿Cómo puedo seleccionar una SUM en una consulta usando Rails 3/MetaSearch?
- 2. Cómo formatear la cláusula WHERE y '?' en una consulta SQLite?
- 3. Modelos asociados y consulta SUM en Rails
- 4. función sum() en la consulta cakephp
- 5. Cómo deshacer la ejecución de una consulta en phpmyadmin
- 6. Cómo detener una consulta de mysql en ejecución
- 7. SQLite: Get Total/Sum of Column
- 8. Necesito mostrar una consulta SQLite en orden descendente
- 9. Uso de la instrucción LIMIT en una consulta SQLite
- 10. ¿Cómo calculo CRC32 de una cadena
- 11. Obteniendo una suma SQLite en Java en Android
- 12. Consulta SQL con SUM en columna en la tabla JOINed
- 13. ¿Cómo calculo una media móvil usando MySQL?
- 14. MYSQL consulta de selección con SUM()
- 15. ¿Cómo construir una consulta SQLite a GROUP por ORDEN?
- 16. sqlalchemy: detener una consulta de larga ejecución
- 17. medio de una suma en una consulta
- 18. ¿Cómo calculo PI en C#?
- 19. ¿Cómo puede un usuario cancelar una consulta de larga ejecución?
- 20. ¿Cómo agregar una nueva columna en una vista en sqlite?
- 21. ¿Puedo hacer esto en una consulta Mysql?
- 22. Pregunta de FMDB SQLite: recuento de filas de una consulta?
- 23. ¿Cómo buscar una subcadena en SQLite?
- 24. ¿Cómo puedo crear una secuencia en SQLite?
- 25. Sqlite en una red compartida
- 26. SQLite Consulta Preguntas
- 27. Sqlite Suprimir sintaxis de consulta en Android
- 28. SQLite - ordenando una tabla
- 29. Cómo optimizar una consulta SQLite3
- 30. Eliminar un árbol temporal B Ordenar de una consulta SQLite
Indique los datos de ejemplo y el resultado esperado. –