Aggregatie (MySQL): verschil tussen versies
Naar navigatie springen
Naar zoeken springen
(2 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 17: | Regel 17: | ||
* Voorbeeld: [[Ontdubbelen (MySQL)]] | * Voorbeeld: [[Ontdubbelen (MySQL)]] | ||
− | == Casus: | + | == 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 | + | 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> | <pre> | ||
################################################################################ | ################################################################################ | ||
− | # EAN | + | # Aggregate EAN |
################################################################################ | ################################################################################ | ||
# | # | ||
Regel 86: | Regel 93: | ||
update asin set ean = uk_ean where ean is null; | 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; | update asin set ean = "-1" where ean is not null and uk_ean is not null and ean<>uk_ean; | ||
− | |||
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