« SQL » : différence entre les versions

De knowledge
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