Aggregatie (MySQL)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Aggregatie lijkt twee dingen te kunnen beteken:

  • Samenvoegen van identieke informatie
  • Afleiden (derive) van nieuwe informatie van een verzameling gegevens.

Aggregated functions - Afleiden

Met aggregated functions wordt rondom MySQL meestal deze tweede betekenis te worden bedoeld. Denk aan functies zoals

  • count()
  • max()
  • min()
  • sum().

Samenvoegen

Casus: Aggregeer indien gelijk of null (feb. 2021)

In een tabel moet kolom sku alleen worden ingevuld, als de waarde in de kolommen ca_sku, cm_sku, etc. identiek is. Hoe kan dat op een handige manier?

Uiteindelijk ben ik met een iteratieve oplossing gekozen:

  • Deze is verbazend snel (kost een paar seconde op een tabel met 67.000 records)
  • Code is gemakkelijk te begrijpen
  • Gemakkelijk uit te breiden
  • Merk op dat de kolom de waarde "-1" krijgt, als er geen geaggregeerde waarde beschikbaar is, en Null als er geen waarde beschikbaar is.
################################################################################
# Aggregate EAN
################################################################################
#
# ca_ean
########################################
#
update asin set ean = ca_ean;


# cm_ean
########################################
#
update asin set ean = cm_ean 	where ean is null;
update asin set ean = "-1" 	where ean is not null and cm_ean is not null and ean<>cm_ean;


# de_ean
########################################
#
update asin set ean = de_ean	where ean is null;
update asin set ean = "-1" 	where ean is not null and de_ean is not null and ean<>de_ean;


# es_ean
########################################
#
update asin set ean = es_ean 	where ean is null;
update asin set ean = "-1" 	where ean is not null and es_ean is not null and ean<>es_ean;


# fr_ean
########################################
#
update asin set ean = fr_ean	where ean is null;
update asin set ean = "-1"	where ean is not null and es_ean is not null and ean<>fr_ean;


# it_ean
########################################
#
update asin set ean = it_ean	where ean is null;
update asin set ean = "-1" 	where ean is not null and it_ean is not null and ean<>it_ean;


# mx_ean
########################################
#
update asin set ean = mx_ean	where ean is null;
update asin set ean = "-1"	where ean is not null and mx_ean is not null and ean<>mx_ean;


# nl_ean
########################################
#
update asin set ean = nl_ean	where ean is null;
update asin set ean = "-1" 	where ean is not null and nl_ean is not null and ean<>nl_ean;


# uk_ean
########################################
#
update asin set ean = uk_ean	where ean is null;
update asin set ean = "-1" 	where ean is not null and uk_ean is not null and ean<>uk_ean;


# Check
########################################
#
select ean, ca_ean, cm_ean, de_ean, es_ean, fr_ean, it_ean, mx_ean, nl_ean, uk_ean from asin;

Zoektermen

  • Aggregated functions
  • Aggregatie
  • Aggregatie MySQL
  • Aggregation

Zie ook

Bronnen