Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [help] query

  1. #1

    [help] query

    Sapreste aiutarmi a risolvere questa query?
    Dovrei usare una stored procedure?

    Help me! Ho bisogno di risolverla entro questa sera e sono in alto mare!

    Citazione:

    Trovare gli annunci di vendita di immobili il cui costo al metro quadro è inferiore al
    20% del costo medio al metro quadro degli annunci attivi per immobili della stessa città e della stessa tipologia.


    codice:

    SELECT annuncio.id_a, recapito.comune, immobile.tipo FROM annuncio JOIN immobile ON (annuncio.id_i = immobile.id_i) JOIN recapito ON (immobile.id_i = recapito.id_i)
    WHERE annuncio.prezzo IS NOT NULL
    AND (annuncio.prezzo/immobile.mq) <
    ALL (SELECT (annuncio.prezzo/immobile.mq)*20/100 FROM annuncio JOIN immobile ON (annuncio.id_i = immobile.id_i) JOIN recapito ON (immobile.id_i = recapito.id_i)
    WHERE annuncio.prezzo IS NOT NULL AND annuncio.attivo = TRUE)
    GROUP BY recapito.comune, immobile.tipo, annuncio.id_a
    ORDER BY annuncio.id_a

  2. #2
    UP!!!

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Come ti è già stato detto non puoi aspettarti che ti vengano scritte query simili in "freestyle" senza postare un dump.

  4. #4
    Hai perfettamente ragione. Chiedo scusa, ma sono proprio niubba e non sapevo manco cosa fosse il dumb...

    codice:
     
    --
    -- Data for Name: immobile; Type: TABLE DATA; Schema: public; Owner: micol_ferrari
    --
    
    COPY immobile (id_i, tipo, uso, mq, postoauto, descrizione, nlocali, piano) FROM stdin;
    13	Laboratorio	commerciale	90	t	Attualmente è adibito a sartoria.	\N	\N
    15	Casa indipendente	privato	200	t	L'immobile si trova in una posizione periferica.	\N	\N
    18	Monolocale	privato	45	t	Perfetto per single. Posizione centrale, vicina alla metropolitana	\N	\N
    19	Appartamento	privato	200	t	Ampissimo. Con studio già attrezzato con libreria e cabina armadio nella camera matrimoniale	4	2
    20	Casa indipendente	privato	185	f	In posizione periferica rispetto al centrocittà.	\N	\N
    14	Casa indipendente	privato	50	f	L'immobile è appena stato ristrutturato	\N	\N
    17	Casa indipendente	privato	105	t	Appartamento ampio, ottimo per famiglie, con grande giardino comune sul retro, coperto da siepe	\N	\N
    21	Appartamento	privato	100	f	bla	2	3
    22	Appartamento	privato	200	f	sdfdss	4	3
    23	Appartamento	privato	250	t	xdfsd	5	6
    \.
    
    
    --
    -- Data for Name: annuncio; Type: TABLE DATA; Schema: public; Owner: micol_ferrari
    --
    
    COPY annuncio (id_a, datapub, datascad_an, validita, faseval, attivo, prezzo, visibile, codf, id_i) FROM stdin;
    28	2011-04-09	2011-05-03	24 days	t	t	195000	0	dede000000000000	18
    25	2011-04-08	2011-07-06	89 days	t	t	200000	0	riky000000000000	17
    26	2011-04-09	2011-05-02	23 days	f	t	170000	0	kioko00000000000	14
    24	2011-04-08	2012-03-05	332 days	f	t	230000	0	mik0000000000000	20
    23	2011-04-08	2015-10-07	1643 days	f	f	275000	1	mik0000000000000	19
    30	2009-04-11	2012-01-01	265 days	f	t	180000	0	kioko00000000000	21
    31	2009-04-11	2012-02-01	296 days	f	t	200000	0	kioko00000000000	22
    32	2010-04-11	2012-03-01	325 days	f	t	300000	0	kioko00000000000	23
    21	2011-04-08	2011-05-05	27 days	f	f	185000	2	kioko00000000000	13
    29	2011-04-11	2011-04-11	00:00:00	f	t	\N	1	kioko00000000000	15
    22	2011-04-08	2011-07-08	91 days	f	f	160000	2	riky000000000000	18
    \.
    
    
    
    
    --
    -- Data for Name: recapito; Type: TABLE DATA; Schema: public; Owner: micol_ferrari
    --
    
    COPY recapito (id_i, via, nciv, cap, comune, provincia, regione) FROM stdin;
    13	Salò	123	21052	Busto Arsizio	VA	Lombardia
    15	Dell'angelo	98	20020	Magnago	MI	Lombardia
    14	dell'Aquila	123	21052	Busto Arsizio	VA	Lombardia
    17	Quintino Sella	15 bis	21052	Busto Arsizio	VA	Lombardia
    18	Borgognone	76	20010	Milano	MI	Lombardia
    19	Dell'ulivo	87	38463	Bolgheri	GR	Toscana
    20	Arno	90 ter	45872	Livorno	LI	Toscana
    21	Bla	12	23423	Busto Arsizio	VA	Lombardia
    22	Sadas	213	12423	Busto Arsizio	VA	Lombardia
    23	Sdfsd	234	23432	Busto Arsizio	VA	Lombardia
    \.
    
    CREATE TABLE annuncio (
        id_a integer NOT NULL,
        datapub date DEFAULT ('now'::text)::date NOT NULL,
        datascad_an date NOT NULL,
        validita interval NOT NULL,
        faseval boolean DEFAULT false NOT NULL,
        attivo boolean DEFAULT true NOT NULL,
        prezzo numeric,
        visibile numeric DEFAULT 0::numeric NOT NULL,
        codf character varying(16) NOT NULL,
        id_i integer NOT NULL
    );
    ALTER TABLE ONLY annuncio
        ADD CONSTRAINT annuncio_pk PRIMARY KEY (id_a);
    ALTER TABLE ONLY annuncio
        ADD CONSTRAINT annuncio_fk1 FOREIGN KEY (codf) REFERENCES utente(codf) ON UPDATE CASCADE ON DELETE CASCADE;
    ALTER TABLE ONLY annuncio
        ADD CONSTRAINT annuncio_fk2 FOREIGN KEY (id_i) REFERENCES immobile(id_i) ON UPDATE CASCADE ON DELETE CASCADE;
    
    CREATE TABLE immobile (
        id_i integer NOT NULL,
        tipo character varying NOT NULL,
        uso character varying NOT NULL,
        mq numeric NOT NULL,
        postoauto boolean NOT NULL,
        descrizione character varying NOT NULL,
        nlocali numeric,
        piano character varying
    );
    ALTER TABLE ONLY immobile
        ADD CONSTRAINT immobile_pk PRIMARY KEY (id_i);
    
    CREATE TABLE recapito (
        id_i integer NOT NULL,
        via character varying NOT NULL,
        nciv character varying NOT NULL,
        cap text NOT NULL,
        comune character varying NOT NULL,
        provincia character varying NOT NULL,
        regione character varying NOT NULL
    );
    ALTER TABLE ONLY recapito
        ADD CONSTRAINT recapito_pk PRIMARY KEY (id_i);
    ALTER TABLE ONLY recapito
        ADD CONSTRAINT recapito_fk FOREIGN KEY (id_i) REFERENCES immobile(id_i) ON UPDATE CASCADE ON DELETE CASCADE;
    Dovrei aver riportato tutto quello che riguarda la query!

  5. #5
    Ho provato a farla e mi esce così, non mi dà errore ma non sono neanche sicura che esca corretta:

    codice:
     
    SELECT annuncio.id_a, r1.comune, im1.tipo 
    FROM annuncio JOIN immobile im1 ON (annuncio.id_i = im1.id_i) JOIN recapito r1 ON (im1.id_i = r1.id_i)
    WHERE annuncio.prezzo IS NOT NULL 
    AND (annuncio.prezzo/im1.mq) < ALL 
                                    (SELECT (AVG(annuncio.prezzo)/im2.mq)*20/100 
                                     FROM annuncio JOIN immobile im2 ON (annuncio.id_i = im2.id_i)    
                                     JOIN recapito r2 ON (im2.id_i = r2.id_i)
                                     WHERE annuncio.prezzo IS NOT NULL AND annuncio.attivo = TRUE
                                      GROUP BY im2.mq)
    GROUP BY r1.comune, im1.tipo, annuncio.id_a
    ORDER BY annuncio.id_a

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Originariamente inviato da michellemabelle
    Ho provato a farla e mi esce così, non mi dà errore ma non sono neanche sicura che esca corretta:

    codice:
     
    SELECT annuncio.id_a, r1.comune, im1.tipo 
    FROM annuncio JOIN immobile im1 ON (annuncio.id_i = im1.id_i) JOIN recapito r1 ON (im1.id_i = r1.id_i)
    WHERE annuncio.prezzo IS NOT NULL 
    AND (annuncio.prezzo/im1.mq) < ALL 
                                    (SELECT (AVG(annuncio.prezzo)/im2.mq)*20/100 
                                     FROM annuncio JOIN immobile im2 ON (annuncio.id_i = im2.id_i)    
                                     JOIN recapito r2 ON (im2.id_i = r2.id_i)
                                     WHERE annuncio.prezzo IS NOT NULL AND annuncio.attivo = TRUE
                                      GROUP BY im2.mq)
    GROUP BY r1.comune, im1.tipo, annuncio.id_a
    ORDER BY annuncio.id_a
    ciao, premesso che forse sono io che oggi non connetto bene....

    volevo fare qualche prova con i tuoi dati, ma trovo difficoltà a crearmi il db tramite cio che hai postato.

    hai scritto tu la struttura di questo db?
    io credo che la citta dell'immobile dovrebbe essere rappresentata da un id e non da uno nome citta, nome prvincia e nome regione

    ad ogni modo, io cercherei prima di scrivere una query per ottenere
    "il costo medio al metro quadro degli annunci attivi per immobili della stessa città e della stessa tipologia."
    quindi qualcosa del genere:

    codice:
    SELECT 
    immobile.tipo,
    recapito.comune,
    recapito.provincia,
    recapito.regione,
    AVG(annuncio.prezzo)/im2.mq) prezzomedio
    FROM annuncio 
    JOIN immobile im2 ON (annuncio.id_i = im2.id_i)    
    JOIN recapito r2 ON (im2.id_i = r2.id_i)
    WHERE annuncio.prezzo IS NOT NULL AND annuncio.attivo = TRUE
    GROUP BY 
    immobile.tipo,
    recapito.comune,
    recapito.provincia,
    recapito.regione
    se tu, postassi le strutture tabelle in una sinatssi SQL più standard, e se postassi i dati in una sintassi tipo INSERT.... potrei approfondire un po di più.

    se poi su skype stessi online...

    ciao

  7. #7
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Allora, mettiamo un po' di ordine...

    Hai già aperto una discussione sostanzialmente per lo stesso problema...

    http://forum.html.it/forum/showthrea...readid=1455571

    Adesso, apri questa con un titolo ASSOLUTAMENTE contrario al regolamento...

    Questa la chiudo e l'altra la lasciamo aperta perchè siamo buoni (ed ormai ci sono vari interventi)

    Invito ad una attenta (ri)lettura del regolamento

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.