2014-06-25 3 views
0

j'ai une table SQL qui ressemble à ceci:min sur une dimension suivie par max sur une autre dimension

i  j  x 
0  0  0.5 
0  1  1.0 
0  2  1.5 
1  0  1.4 
1  1  1.3 
1  2  1.2 

et ainsi de suite. Je voudrais prendre la moyenne sur la dimension j suivie par le minimum sur la dimension i. Dans ce cas, en prenant la moyenne sur la dimension j produit ce qui suit:

i  x 
0  1.0 
1  1.3 

Prendre le minimum sur la dimension i produit alors la valeur 1,0, ce qui est le résultat final. Existe-t-il un moyen efficace d'exécuter une requête comme celle de cet exemple, c'est-à-dire une requête dans laquelle une séquence d'opérations de réduction de dimension est exécutée dans un ordre spécifié?

On notera que si on inverse l'ordre des opérations, le résultat intermédiaire est

j  x 
0  0.5 
1  1.0 
2  1.2 

En prenant la moyenne de la dimension j produit un résultat final de 0,9. Ainsi, l'ordre des opérations est important.

Phillip

http://phillipmfeldman.org

Répondre

0

Vous pouvez le faire avec une sous-requête, bien sûr:

SELECT MIN(avg_over_j) FROM (
    SELECT i, AVG(x) AS avg_over_j 
    FROM TheTable 
    GROUP BY i 
) 

Mais ce n'est pas APL ou la langue J; il n'y a pas d '"opérations de réduction de dimension".

Questions connexes