Sql eseguire una divisione fra due campi in una istruzione Sql

di il
13 risposte

Sql eseguire una divisione fra due campi in una istruzione Sql

Buongiorno amici, Vi chiedo un aiuto se è possibile ottenere un campo -risultato con una divisione fra due campi già totalizzati con sum. Vi allego sql di partenza. 

SELECT DISTINCT YEAR(e1_dtfat) AS anno, SUM(e1_imene) AS imeneT,  SUM(e1_kwhmq) AS kwhmqT FROM energia where e1_cdene = "2" order  BY anno ASC

in questa sql ho esigenza di ottenere un campo risultato fra i campi già totalizzati  imeneT / kwhmqT .

Grazie a tutti

13 Risposte

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    SELECT DISTINCT 
      YEAR(e1_dtfat) AS anno, 
      SUM(e1_imene) AS imeneT,  
      SUM(e1_kwhmq) AS kwhmqT ,
      SUM(e1_imene)/SUM(e1_kwhmq)
    FROM energia where e1_cdene = "2" 
    ORDER  BY anno ASC

    comunque, quel DISTINCT in una query di questo tipo e' MOOOOOOOOOOOOOOOOOOLTO strano.

    Valuta bene che cosa stai "combinando"

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    Buonasera e grazie  del tuo contributo. Sql che ho postato funziona perfettamente , ecco i passaggi :

    SELECT DISTINCT YEAR(e1_dtfat) AS anno, SUM(e1_imene) AS imeneT,  SUM(e1_kwhmq) AS kwhmqT FROM energia WHERE e1_cdene = '2' GROUP BY anno ASC

    ecco il risultato

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    E hai provato la query proposta??

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    A parte quanto ti ha detto Oregon, sei sicuro che la divisione dei costi vada fatta per mq?

    Una sql inerente ad un condominio dovrebbe avere una join con le tabelle millesimali e con l'anagrafica unità immobiliari. Il costo va ripartito 1/2 in base al piano crescente in altezza e 1/2 in base ai millesimi.

    Come dico sempre, programmare significa conoscere un linguaggio e conoscere la materia che stai informatizzando.

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    Buongiorno attenzione non stiamo parlando di un condominio.  la query riporta il totale gas pagato per anno ed i mq per anno.

    La divisone serve a darmi un valore del costo per mq per anno.

    Grazie ancora

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    E ancora non rispondi sulla soluzione proposta... incredibile 

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    Salve, 

    ma perche' DISTINCT ??

    salutoni romagnoli
    -- 
    Andrea

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    14/06/2025 - asql ha scritto:

    Salve, 

    ma perche' DISTINCT ??

    salutoni romagnoli
    -- 
    Andrea

    ah, scusate, l'ha chiesto anche @migliorabile...

    salutoni romagnoli
    -- 
    Andrea

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    Buongiorno , ho provato sql proposto da "migliorabile", il risultato è questo :  attenzione distinct lo uso per avere un totale per anno, in questa query ottengo solo anno 2025.  

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    16/06/2025 - pdecaro ha scritto:

    ho provato sql proposto da "migliorabile", il risultato è questo

    Nel.senso che non è quello atteso?

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    Uhm... non hai risposto.

    forse quello che cerchi è questo?

    -- create
    CREATE TABLE ENERGIA (
      eId INTEGER PRIMARY KEY,
      CAMPODATA DATE NOT NULL,
      CAMPOA FLOAT NOT NULL,
      CAMPOB FLOAT NOT NULL,
      CAMPOCONDIZIONE INTEGER NOT NULL
    );
    
    -- insert
    INSERT INTO ENERGIA VALUES (0001, '2024-06-01', 100, 90, 2);
    INSERT INTO ENERGIA VALUES (0002, '2024-12-02', 120, 98, 2);
    INSERT INTO ENERGIA VALUES (0003, '2025-08-03', 110, 80, 2);
    INSERT INTO ENERGIA VALUES (0004, '2025-09-06', 140, 100, 2);
    INSERT INTO ENERGIA VALUES (0005, '2025-10-11', 105, 91, 2);
    INSERT INTO ENERGIA VALUES (0006, '2025-12-06', 115, 99, 2);
    
    -- fetch 
    SELECT * FROM ENERGIA;
    SELECT
        YEAR(CAMPODATA) AS ANNO,
        SUM(CASE WHEN CAMPOCONDIZIONE = 2 THEN CAMPOA ELSE 0 END) AS somma_condizionata1,
        SUM(CASE WHEN CAMPOCONDIZIONE = 2 THEN CAMPOB ELSE 0 END) AS somma_condizionata2,
        SUM(CASE WHEN CAMPOCONDIZIONE = 2 THEN CAMPOA ELSE 0 END)/SUM(CASE WHEN CAMPOCONDIZIONE = 2 THEN CAMPOB ELSE 0 END)
        as rapportocondizionato
    FROM
        ENERGIA
    WHERE
        CAMPOCONDIZIONE = 2
    GROUP BY
        ANNO;

    risultati:

    +-----+------------+--------+--------+-----------------+
    | eId | CAMPODATA  | CAMPOA | CAMPOB | CAMPOCONDIZIONE |
    +-----+------------+--------+--------+-----------------+
    |   1 | 2024-06-01 |    100 |     90 |               2 |
    |   2 | 2024-12-02 |    120 |     98 |               2 |
    |   3 | 2025-08-03 |    110 |     80 |               2 |
    |   4 | 2025-09-06 |    140 |    100 |               2 |
    |   5 | 2025-10-11 |    105 |     91 |               2 |
    |   6 | 2025-12-06 |    115 |     99 |               2 |
    +-----+------------+--------+--------+-----------------+
    +------+---------------------+---------------------+----------------------+
    | ANNO | somma_condizionata1 | somma_condizionata2 | rapportocondizionato |
    +------+---------------------+---------------------+----------------------+
    | 2024 |                 220 |                 188 |   1.1702127659574468 |
    | 2025 |                 470 |                 370 |   1.2702702702702702 |
    +------+---------------------+---------------------+----------------------+
  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    Troppi decimali?

    SELECT
        YEAR(CAMPODATA) AS ANNO,
        SUM(CASE WHEN CAMPOCONDIZIONE = 2 THEN CAMPOA ELSE 0 END) AS somma_condizionata1,
        SUM(CASE WHEN CAMPOCONDIZIONE = 2 THEN CAMPOB ELSE 0 END) AS somma_condizionata2,
        round(SUM(CASE WHEN CAMPOCONDIZIONE = 2 THEN CAMPOA ELSE 0 END)/
        SUM(CASE WHEN CAMPOCONDIZIONE = 2 THEN CAMPOB ELSE 0 END), 4)
        as rapportocondizionato
    FROM
        ENERGIA
    WHERE
        CAMPOCONDIZIONE = 2
    GROUP BY
        ANNO;

    nel manuale: somma condizionata campi.

  • Re: Sql eseguire una divisione fra due campi in una istruzione Sql

    Buonasera ,  sihsandrea . 

    Grazie è proprio quello che cercavo.   

    Bravissimo

Devi accedere o registrarti per scrivere nel forum
13 risposte