Query di conteggio, solo di alcune righe di una tabella

Anonimo
2020-04-08T17:31:33+00:00

Ciao a tutti,

sono alle prese con un nuovo database e mi sono bloccata su un punto.

In pratica il mio problema è che vorrei sommare i valori di un certo campo Quantità, ma non per tutte le righe della tabella di partenza, ma sino ad un valore che gli passo io.

Per essere più chiara faccio un esempio

Ho la tabella ORDINI composta da un campo DATA e Quantità, io vorrei sommare le Quantità considerando solo 3 record della tabella ORDINI.

Data          Quantità

1/1/2020   500

1/1/2020   100

2/1/2020   50

2/1/2020   150

3/1/2020   200

4/1/2020   150

Stavo provando con questo codice, ma non mi da il risultato desiderato

SELECT sum(ORDINI.Quantità)

from ORDINI

HAVING COUNT(*)<=3

Non capisco dove sto sbagliando :(

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

6 risposte

Ordina per: Più utili
  1. Anonimo
    2020-04-08T20:25:42+00:00

    ciao Stacle,

    molto bene, siamo sulla strada giusta.

    L'operatore top n ti consente di estrarre un numero di righe in base al famigerato ordinamento.

    Di nuovo, approfondisci in autonomia questo concetto è molto importante.

    Quindi nel tuo caso, supponiamo che le righe siano le prime tre in ordinanamento crescente di id per cui dovresti ottenere 650.

    Devi sommare, come logica vuole le prime tre, quindi le selezioni e le sommi.

    SELECT sum(d.quantita) AS totQTA

    FROM (SELECT TOP 3 tuaTabella.data, tuaTabella.quantita, Tabella3.id

    FROM tuaTabella

    ORDER BY tuaTabella.id  )  AS D;

    ovviamente modifica tuaTabella con il nome proprio del tuo scenario.

    Se imposti order by tuaTabella.id desc cosa succede….? prova….

    avrei potuto dirtelo subito...ma è bene ragionare un po'….

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-04-08T20:07:50+00:00

    Ciao Sandro, 

    ok ho capito il discorso. Potrei inserire una campo numerazione automatica che tiene traccia dell’ordine delle righe quindi la mia tabella diventa

    ID Data          Quantità

    1   1/1/2020   500

    2   1/1/2020   100

    3   2/1/2020   50

    4   2/1/2020   150

    5   3/1/2020   200

    6   4/1/2020   150

    peró il codice sopra non mi funziona ancora

    Grazie per l’aiuto

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-04-08T19:25:47+00:00

    ciao Stacla,

    in una tabella oltre che a non esserci records non c'è un ordinamento specifico, e questo si ottiene nelle query.

    Torniano nuovamente al punto di partenza….quale è il criterio da utilizzare?

    Come noti nella tua tabella hai delle righe di pari ordinamento in base alla data perché la data è uguale, concordi? quale viene prima dell'altra? ti ci vuole un tiebreaker….di nuovo viene prima la riga 01012020 con qta 500 o 100 lo stesso per quella con data 02012020

    L'ordinamento è tutt'altro che concetto banale.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-04-08T18:50:26+00:00

    Il valore 3 in questo momento è un valore fittizio, lo sostituirò con un parametro proveniente da un’altra query, ma in questo momento vorrei capire in modo più basilare dove sbaglio nel codice supponendo di avere un valore fisso..

    Io vorrei ottenere come risultato la somma del campo Quantità delle prime 3 righe, evitando le altre

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2020-04-08T18:30:49+00:00

    ciao Stacla,

    nella tabelle ci sono colonne e righe e non records.

    Quale è il criterio di scelta delle tre righe che devi sommare?

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento