« SQL » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « Ici je vais donner les syntaxes pour les requêtes rares mais parfois utiles. == Détecter (compter) les doublons == SI on considère une table LISTE: {| class="wikitable" |+ !Champ !Type |- |nom |varchar(255) |- |prenom |varchar(255) |- |age |integer |- |Addresse |varchar(255) |- |Telephone |varchar(255) |} On voudrait avoir un liste des personnes ayant le même nom et le même âge. En gros est-ce que l'on a des doublons dans une table même si ils ont chang... ») |
mAucun résumé des modifications |
||
Ligne 30 : | Ligne 30 : | ||
GROUP BY nom, prenom, age | GROUP BY nom, prenom, age | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Formater les dates == | |||
Les dates ont leur propre système de stockage dans une base de données. En revanche la façon dons les dates s'affichent peut varier en fonction de la base et du format par défaut. (Le NLS_DATE_FORMAT d'Oracle par exemple). | |||
La base elle même doit stocker les dates sous un format de type timestamp entier (à la Unix). | |||
Pour la base postgres que j'utilise j'ai par défaut une date sous le forme :<syntaxhighlight lang="text"> | |||
2024-06-06 16:45:00.000 +0200 | |||
</syntaxhighlight>C'est bien mais : | |||
* On n'est pas garanti que ce soit toujours le même format | |||
* Ce n'est pas forcément le plus lisible. | |||
* Si on veut utiliser le champ pour un "group by" on veut peut être avoir des dates plus globales. | |||
{| class="wikitable" | |||
|+ | |||
!'''Pattern''' | |||
!'''Description''' | |||
|- | |||
|YYYY | |||
|Année sur 4 chiffres | |||
|- | |||
|YY | |||
|Année sur 2 chiffres | |||
|- | |||
|Y | |||
|Dernier chiffre de l'année (4 pour 2024) | |||
|- | |||
|AD ou BC | |||
|Dit si la date est avant ou après le "début de l'aire commune" (avant ou après JC) | |||
|- | |||
|MONTH ou Mounth | |||
|Le nom du mois en anglais (tout en majuscule ou seulement la première lettre) | |||
|- | |||
|Mon ou mon | |||
|L'abréviation (en anglais) du nom du mois. | |||
|- | |||
|MM | |||
|Le numéro du mois (sur deux chiffres avec le "0" non significatif) | |||
|- | |||
|DAY, Day ou day | |||
|Le jour de la semaine | |||
|} |
Version actuelle datée du 20 juin 2024 à 12:20
Ici je vais donner les syntaxes pour les requêtes rares mais parfois utiles.
Détecter (compter) les doublons
SI on considère une table LISTE:
Champ | Type |
---|---|
nom | varchar(255) |
prenom | varchar(255) |
age | integer |
Addresse | varchar(255) |
Telephone | varchar(255) |
On voudrait avoir un liste des personnes ayant le même nom et le même âge. En gros est-ce que l'on a des doublons dans une table même si ils ont changé d'adresse.
On utilise le concept de groupements et de sous totaux.
SELECT cout(*) as nbr nom, prenom, age
FROM LISTE
GROUP BY nom, prenom, age
Formater les dates
Les dates ont leur propre système de stockage dans une base de données. En revanche la façon dons les dates s'affichent peut varier en fonction de la base et du format par défaut. (Le NLS_DATE_FORMAT d'Oracle par exemple).
La base elle même doit stocker les dates sous un format de type timestamp entier (à la Unix).
Pour la base postgres que j'utilise j'ai par défaut une date sous le forme :
2024-06-06 16:45:00.000 +0200
C'est bien mais :
- On n'est pas garanti que ce soit toujours le même format
- Ce n'est pas forcément le plus lisible.
- Si on veut utiliser le champ pour un "group by" on veut peut être avoir des dates plus globales.
Pattern | Description |
---|---|
YYYY | Année sur 4 chiffres |
YY | Année sur 2 chiffres |
Y | Dernier chiffre de l'année (4 pour 2024) |
AD ou BC | Dit si la date est avant ou après le "début de l'aire commune" (avant ou après JC) |
MONTH ou Mounth | Le nom du mois en anglais (tout en majuscule ou seulement la première lettre) |
Mon ou mon | L'abréviation (en anglais) du nom du mois. |
MM | Le numéro du mois (sur deux chiffres avec le "0" non significatif) |
DAY, Day ou day | Le jour de la semaine |