Funciones de agregación#

  • Ultima modificación: Mar 6, 2024 | YouTube

Preparación

[1]:
import sqlite3

from IPython.core.magic import register_cell_magic, register_line_magic

conn = sqlite3.connect(":memory:")
cur = conn.cursor()


@register_line_magic
def sql(line):
    return cur.execute(line).fetchall()


@register_cell_magic
def sqlite3script(line, cell):
    cell = [l for l in cell.split("\n") if len(l) >= 2 and l[0:2] not in ["--", "##"]]
    cell = "\n".join(cell)
    conn.executescript(cell)
    conn.commit()

Datos de prueba

[2]:
%%sqlite3script

DROP TABLE IF EXISTS demo;

CREATE TABLE demo (
  a STRING,
  n FLOAT
);

INSERT INTO demo
VALUES
    ('a', 1),
    ('a', 2),
    ('b', 3),
    ('b', 4),
    ('b', 5);

Funciones

[3]:
##
## avg(X)
##
%sql SELECT a, avg(n) FROM demo GROUP BY a;
[3]:
[('a', 1.5), ('b', 4.0)]
[4]:
##
## count(*)
##   retorna la cantidad de filas en un grupo
## count(X)
##   count(X) cuenta la cantidad de registros no nulos.
##
%sql SELECT a, count(*) FROM demo GROUP BY a;
[4]:
[('a', 2), ('b', 3)]
[5]:
##
## max(X)
##
%sql SELECT a, max(n) FROM demo GROUP BY a;
[5]:
[('a', 2.0), ('b', 5.0)]
[6]:
##
## min(X)
##
%sql SELECT a, min(n) FROM demo GROUP BY a;
[6]:
[('a', 1.0), ('b', 3.0)]
[7]:
##
## sum(X)
##
%sql SELECT a, sum(n) FROM demo GROUP BY a;
[7]:
[('a', 3.0), ('b', 12.0)]