Aggregatie (MySQL)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

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: Alle kolommen gelijk? (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). Daarnaast is-ie gemakkelijk te begrijpen en gemakkelijk uit te breiden. Merk op dat de kolom de waarde "-1" krijgt, als er geen geaggregeerde waarde beschikbaar is. Itt tot Null als er geen waarde beschikbaar is:

################################################################################
# EAN - Iteratieve
################################################################################
#
# 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