Aggregatie (MySQL): verschil tussen versies
Naar navigatie springen
Naar zoeken springen
(Nieuwe pagina aangemaakt met '''Aggregatie'' lijkt twee dingen te kunnen beteken: * '''Samenvoegen''' van identieke informatie * '''Afleiden (derive)''' van nieuwe informatie van een verzamelin...') |
|||
(6 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 16: | Regel 16: | ||
* Voorbeeld: [[Ontdubbelen (MySQL)]] | * Voorbeeld: [[Ontdubbelen (MySQL)]] | ||
+ | |||
+ | == 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 <code>Null</code> als er geen waarde beschikbaar is. | ||
+ | |||
+ | <pre> | ||
+ | ################################################################################ | ||
+ | # 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; | ||
+ | </pre> | ||
== Zoektermen == | == Zoektermen == | ||
Regel 28: | Regel 112: | ||
* [[Aggregatie (dwh)]] | * [[Aggregatie (dwh)]] | ||
* [[Ontdubbelen (MySQL)]] | * [[Ontdubbelen (MySQL)]] | ||
+ | |||
+ | == Bronnen == | ||
+ | |||
+ | * https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html |
Huidige versie van 4 feb 2021 om 17:47
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
- Voorbeeld: Ontdubbelen (MySQL)
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