Cas pratique I1 : Identifier les acheteurs et vendeurs dans PostgreSQL/PostGIS

Rechercher à partir d'un nom

Pour rechercher des achats de la SCI Picsou sur le département du Nord (59) quand l'on connait parfaitement le nom présent dans DV3F :

SELECT *
FROM dvf.mutation 
WHERE coddep = '59' AND 'SCI PICSOU' = ANY(l_noma); -- mettre en majuscule

-- ou

SELECT *
FROM dvf.mutation 
WHERE coddep = '59' AND 'SCI PICSOU' = ANY(l_noma) AND fiabmaxa IS TRUE; -- pour s'assurer d'une fiabilité maximale

Pour rechercher des achats de la SCI Picsou sur le département du Nord (59) quand l'on connait approximativement le nom :

SELECT DISTINCT t1.*
FROM dvf.mutation t1
JOIN 
(
    SELECT idachvend
    FROM dvf.acheteur_vendeur
    WHERE ffnomprop LIKE '%SCI%PICSOU%' -- mettre en majuscule
) t2
ON t2.idachvend = ANY(t1.l_ida)
WHERE coddep = '59';

Pour rechercher, de manière plus exhaustive, les achats de la SCI Picsou sur le département du Nord (59) quand l'on connait approximativement le nom :

SELECT DISTINCT t1.*
FROM 
    dvf.mutation t1
JOIN (
        SELECT idachvend
        FROM dvf.acheteur_vendeur
        WHERE identite IN (
                    SELECT identite
                    FROM dvf.acheteur_vendeur
                    WHERE ffnomprop LIKE '%SCI%PICSOU%')
        UNION

        SELECT idachvend
        FROM dvf.acheteur_vendeur
        WHERE ffnomprop LIKE '%SCI%PICSOU%' 
                AND identite IS NULL    
    ) t2
ON t2.idachvend = ANY(t1.l_ida)
WHERE coddep = '59';

A noter que ce type de requêtes permet potentiellement de reconstituer les propriétés achetées par une personne morale. Il convient de les utiliser dans le respect de la legislation.

Rechercher à partir d'un code SIREN

Pour rechercher les ventes de la SCI Picsou sur le département du Nord (59) lorsque l'on connait son numero SIREN (591234567890):

SELECT DISTINCT t1.*
FROM 
    dvf.mutation t1
JOIN (
        SELECT idachvend
        FROM dvf.acheteur_vendeur
        WHERE identite IN (
                    SELECT identite
                    FROM dvf.acheteur_vendeur
                    WHERE ffsiren = '591234567890')
        UNION

        SELECT idachvend
        FROM dvf.acheteur_vendeur
        WHERE ffsiren = '591234567890' 
                AND identite IS NULL    
    ) t2
ON t2.idachvend = ANY(t1.l_idv)
WHERE coddep = '59';

Notion thématique associée

Identifier les acheteurs et vendeurs

Cas Pratique I2 : Repérer les catégories d'acteurs

Sélectionner les mutations pour une catégorie d'acteur

Pour lister les mutations, sur la période 2010-2015, dans lesquelles une commune est intervenue dans le département du Nord (59) :

SELECT *
FROM dvf.mutation 
WHERE coddep = '59'
    AND anneemut >= 2010 AND anneemut <= 2015 
    AND ((codtypprov LIKE '%P5%' AND fiabmaxv IS TRUE) 
        OR (codtypproa LIKE '%P5%' AND fiabmaxa IS TRUE)); --  si DROM ou Paris, prendre aussi P6

Dénombrer les mutations par catégorie d'acheteur

Pour dénombrer les mutations pour chaque catégorie d'acheteur entre 2010 et 2015 sur le département du Nord (59) :

SELECT codtypproa, count(*) AS nb_achat
FROM dvf.mutation 
WHERE coddep = '59'
    AND anneemut >= 2010 AND anneemut <= 2015 
    AND fiabmaxa IS TRUE
GROUP BY codtypproa
ORDER BY nb_achat DESC; 

Pour dénombrer les logements vendus par un organisme de logement social à un particulier entre 2010 et 2015 sur le département du Nord (59) :

SELECT sum(nblocmai + nblocapt) as nombre_de_logements
FROM dvf.mutation 
WHERE coddep = '59'
    AND anneemut >= 2010 AND anneemut <= 2015 
    AND codtypprov LIKE '%F1%' AND fiabmaxv IS TRUE
    AND codtypproa LIKE '%X0%' AND fiabmaxa IS TRUE; 

Notion thématique associée

Repérer les catégories d'acteurs

Cas Pratique I3 : Fiabiliser l'analyse des modes d'action des acteurs sur les marchés

Améliorer le repérage de certains modes d'action à l'aide des roles

Pour lister très largement les ventes qui concernent la promotion immobilière entre 2010 et 2015 sur le département du Nord (59) :

SELECT sum(nblocmai + nblocapt) as nombre_de_logements
FROM dvf.mutation 
WHERE coddep = '59'
    AND anneemut >= 2010 AND anneemut <= 2015 
    AND ((codtypprov LIKE '%F6%' AND fiabmaxv IS TRUE) 
            OR rolev = 'Op') ; 

Pour fiabiliser le nombre de logements achetés par un organisme de logement social entre 2010 et 2015 sur le département du Nord (59) :

SELECT sum(nblocmai + nblocapt) as nombre_de_logements
FROM dvf.mutation 
WHERE coddep = '59'
    AND anneemut >= 2010 AND anneemut <= 2015 
    AND ((codtypproa LIKE '%F1%' AND fiabmaxa IS TRUE)
        OR rolea = 'Os'); 

Pour lister les ventes suite à aménagement de parcelle par une structure supposée professionnelle entre 2010 et 2015 sur le département du Nord (59) :

SELECT *
FROM dvf.mutation 
WHERE coddep = '59'
    AND anneemut >= 2010 AND anneemut <= 2015 
    AND ((codtypprov LIKE '%F5%' AND fiabmaxv IS TRUE)
        OR (rolev = 'Oa' AND codtypprov NOT LIKE '%G%' AND codtypprov NOT LIKE '%X0%' AND fiabmaxv IS TRUE)); 

Notion thématique associée

Adapter l'analyse à l'aide des rôles

Dernière mise à jour : 19/04/2018

Auteur(s): Magali Journet, Antoine Herman - Cerema