Database
 sql >> Base de données >  >> RDS >> Database

Comment comparer deux lignes du même tableau

Parfois, vous devrez peut-être comparer des lignes successives ou comparer chaque ligne avec la ligne précédente dans la table MySQL. Dans cet article, nous verrons comment comparer deux lignes d'une même table à l'aide d'auto-jointures. Vous pouvez l'utiliser pour comparer des lignes consécutives ou obtenir la différence entre deux lignes.


Comment comparer des lignes successives dans MySQL

Disons que vous avez le tableau suivant ventes (id, date_commande, montant) et la colonne de montant contient les données de ventes cumulées totales.

mysql> create table sales(id int auto_increment primary key,
 order_date date, amount int);

mysql> insert into sales(order_date, amount)
     values('2020-10-01',100),
     ('2020-10-02',125),
     ('2020-10-03',140),
     ('2020-10-04',160);

mysql> select * from sales;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-10-01 |    100 |
|    2 | 2020-10-02 |    125 |
|    3 | 2020-10-03 |    140 |
|    4 | 2020-10-04 |    160 |
+------+------------+--------+

Lecture bonus :Comment comparer deux colonnes dans MySQL

Dans notre exemple, si vous souhaitez connaître les ventes effectuées chaque jour, vous devez comparer la valeur du montant de chaque ligne avec celle de la ligne précédente. Voici la requête SQL pour comparer chaque ligne avec la ligne précédente.

mysql> SELECT
         g1.id, g1.order_date,g1.amount,
         (g2.amount - g1.amount) AS daily_amount
     FROM
         sales g1 INNER JOIN sales g2 ON g2.id = g1.id + 1;
+------+------------+--------+--------------+
| id   | order_date | amount | daily_amount |
+------+------------+--------+--------------+
|    1 | 2020-10-01 |    100 |           25 |
|    2 | 2020-10-02 |    125 |           15 |
|    3 | 2020-10-03 |    140 |           20 |
+------+------------+--------+--------------+

Dans la requête ci-dessus, nous joignons la table des ventes avec elle-même en utilisant une condition INNER JOIN g2.id=g1.id + 1 qui vous permet de comparer chaque ligne avec sa ligne précédente.

Lecture bonus :Comment obtenir chaque Nième ligne dans MySQL

Veuillez noter que cette condition dépend du fait que notre colonne id comporte des numéros consécutifs. La plupart des tables ont une colonne de clé primaire à incrémentation automatique, elle devrait donc fonctionner dans la plupart des cas. S'ils diffèrent par une autre constante, vous pouvez modifier la condition INNER JOIN en conséquence.

Heureusement, vous pouvez maintenant facilement comparer deux lignes dans la même table dans MySQL.

Ubiq facilite la visualisation des données et leur suivi dans des tableaux de bord en temps réel. Essayez Ubiq gratuitement.