Est-ce que mysql a l'équivalent des "fonctions analytiques" d'Oracle?
Je suis à la recherche de la fonction analytique comme PARTITION BY
dans MySQL (voir la docs pour plus d'info)
Des fonctions analytiques de calcul d'une valeur globale basée sur un groupe de
les lignes. Ils diffèrent des fonctions d'agrégation dans le fait qu'ils rendent
plusieurs lignes pour chaque groupe.
Existe-t-elle?
source d'informationauteur ripper234
Vous devez vous connecter pour publier un commentaire.
NON, c'est l'une des principales manque de MySQL, par rapport à d'autres SGBD comme MYSQL, Oracle, PostgreSQL. Je doute fort de voir les Fonctions de la Fenêtre de MySQL dans le futur, surtout après Oracle, acquisition de MySQL ...
Mise à jour 04/2018
MySQL 8.0 offre SQL les fonctions de la fenêtre.
voulais juste vous dire que vous pouvez utiliser des variables dans MySQL pour imiter des fonctions analytiques. SOMME, par exemple, pourrait être fait comme suit:
Si vous voulez
PARTITION BY
c'est possible, mais juste un peu plus compliqué. Fondamentalement, vous ajoutez un autre@variable
à surveiller le compte (ou ce que vous voulez de partition), commande par compte (ou la variable), et puis de réinitialiser le@sum
lorsque le compte des modifications. Comme suit:Vous allez noter deux changements majeurs qui devait être fait pour accomplir la partition de l'effet:
La table principale (
tbl
) est enfermé dans un sous-sélection avec unORDER BY
clause. Cela est nécessaire car lorsque MySQL va faire la@account
variable de test les valeurs doivent déjà être commandé. Si ce n'était pas le cas, vous obtenez incorrecte, la somme des valeurs ainsi que les valeurs de compte.Il y a un "extra" de la colonne alias
as _
. Vous pouvez ignorer cette colonne lors de l'utilisation des résultats, mais de l'ordre de la@account
vérifier et modifier doit être après le@sum
vérifier et de changer.Aussi avec cela, vous pouvez choisir de modifier l'ordre des colonnes si vous n'avez pas l'esprit de compte être le dernier. Ceci est fait en prenant le premier
account
colonne depuis qu'il fait double emploi avec la dernière_
colonne et puis évidemment, rebaptisé alias_
àaccount
.Ressources:
Bien que MySQL ne supporte pas les fonctions analytiques, MariaDB. C'est une baisse-dans le remplacement pour MySQL et est créé par les développeurs de MySQL.
Il est un produit commercial pour SQL Server qui fournit la base de données des fonctions analytiques et il peut être connecté à une base de données oracle ou MySQL base de données via des serveurs liés'/odbc - voici un article décrivant:
http://westclintech.com/Blog/tabid/132/EntryId/88/Using-XLeratorDB-with-MySQL-and-other-RDBMS-s.aspx
Cela nécessite d'avoir un Windows o/s et SQL Server 2005 ou plus tard (dont la version Express est gratuite)