Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    25

    [ACCESS] Query per calcolare copresenze.

    Gentilissimi ho una nuova necessità che non avevo mai incontrato.


    In una mia tabella ho due campi data, INIZIO e FINE che mi delineano un intervallo temporale
    Ora ho la necessità di contare quante co-presenze si generano ogni giorno.
    Al termine dovrei calcolare qual'è il numero MINORE di co-presenze, il MAGGIORE e la MEDIA.
    Una ulteriore richiesta che mi hanno fatto era quella di sapere le medie interquantili ma penso di bypassare....
    Ultima modifica di sbs; 09-06-2021 a 14:01

  2. #2
    sbs, devi darci dei dettagli in più: per esempio, come sono fatte le tue tabelle. Ricorda sempre che noi non siamo davanti al tuo pc

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    25
    Scusa!!!
    ho tolto moltissimi campi ma ho lasciato quelli che mi servono per questa query


    codice:
    SERIAL;ID_APERTURA;STATO;DATA RICHIESTA;DATA AUTORIZZAZIONE;DATA CHIUSURA
    
    635;74694;CHIUSA;17/12/2018;18/12/2018;19/03/2019
    642;75115;CHIUSA;31/12/2019;04/01/2019;12/02/2019
    653;76031;CHIUSA;18/01/2019;19/01/2019;12/02/2019
    658;76299;CHIUSA;24/01/2019;25/01/2019;02/03/2019
    664;76851;CHIUSA;04/02/2019;07/02/2019;16/02/2019
    666;77070;CHIUSA;07/02/2019;08/02/2019;01/03/2019
    667;77075;CHIUSA;07/02/2019;13/02/2019;20/02/2019
    671;77779;CHIUSA;22/02/2019;22/02/2019;12/04/2019
    892;80189;ATTIVA;20/04/2021;22/04/2021;
    992;80320;SOSPESA;18/05/2021;;

    Il campo Stato serve per analizzare solo i record chiusi, serial è la chiave mentre id_apertura era la vecchia chiave che è stata mantenuta
    I record attuali sono 1156 il DB è attivo dal 01/02/2015.

  4. #4
    Quote Originariamente inviata da sbs Visualizza il messaggio
    ... Ora ho la necessità di contare quante co-presenze si generano ogni giorno.
    Al termine dovrei calcolare qual'è il numero MINORE di co-presenze, il MAGGIORE e la MEDIA....
    che vuol dire? dato l'esempio che hai postato, cosa dovresti ottenere?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    25
    OK analizzo a mano solo le prime 4 righe
    riga uno dal 18/12/2019 al 19/03/2019
    riga due dal 04/01/2019 al 12/02/2019
    riga tre dal 19/01/2019 al 12/02/2019
    riga quattro dal25/01/2019 al 02/03/2019


    l'output "intermedio" dovrebbe essere
    giorno 03/01/2019 1 presenza
    giorno 04/01/2019 2 presenze
    giorno 19/01/2019 3 presenze
    giorno 25/01/2019 4 presenze


    l'output "finale" dovrebbe essere
    Range temporale 18/12/2019 al 19/03/2019
    Giorni nel periodo 92
    MINIMO 1 presenza
    MASSIMO 4 presenze
    MEDIA 2,10 presenze



  6. #6
    Quote Originariamente inviata da sbs Visualizza il messaggio
    OK analizzo a mano solo le prime 4 righe

    l'output "intermedio" dovrebbe essere
    giorno 03/01/2019 1 presenza
    giorno 04/01/2019 2 presenze
    giorno 19/01/2019 3 presenze
    giorno 25/01/2019 4 presenze
    quale sarebbe il ragionamento che sta dietro?

  7. #7
    considerando le date di apertura e di chiusura, sviluppando su excel ho i seguenti periodi e le relative presenze contemporanee:

    da 18/12/19 a 03/01/20 : 1
    da 04/01/20 a 18/01/20 : 2
    da 19/01/20 a 24/01/20 : 3
    da 25/01/20 a 12/02/20 : 4
    da 13/02/20 a 02/03/20 : 2
    da 03/02/20 a 19/03/20 : 1


    GG : 93
    MIN: 1
    MAX: 4
    AVG: 2,107526882

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    468
    immagine cancellata, vedi post successivo

    ho usato i valori della tabella presenze che hai pubblicato,
    ho creato una tabella calendario con le date da analizzare da 2018-12-18 fino a 2019-04-12 (DATA_ANALISI)
    ho estratto i valori con questa query,
    codice:
    SELECT
      count(DATA_ANALISI) AS NUMERO_GIORNI
    , sum(PRESENZE) AS NUMERO_PRESENZE
    , min(PRESENZE) AS MIN_PRESENZE
    , max(PRESENZE) AS MAX_PRESENZE
    , CONVERT(decimal(10,6), sum(PRESENZE)) / CONVERT(decimal(10,6), count(DATA_ANALISI)) AS AVG_PRESENZE
    FROM (
    SELECT
      CONVERT(varchar, DATA_ANALISI, 23) AS DATA_ANALISI
    , count(DATA_ANALISI) AS PRESENZE
    FROM calendario, presenze
    WHERE STATO = 'CHIUSA'
      AND NOT (DATA_ANALISI < DATA_AUTORIZZAZIONE OR DATA_CHIUSURA < DATA_ANALISI)
    GROUP BY DATA_ANALISI
    ) x
    la query interna la puoi usare per estrarre i dati intermedi (data, presenze)
    ma togliendo il group by puoi estrarre tutti gli elementi della tabella presenze che vengono selezionati

    anche se tagliata per sql server, penso che non avrai difficolta' ad applicarla in access vista la semplicita'

    spero che il risultato sia quello desiderato e la query utile
    Ultima modifica di marino51; 10-06-2021 a 02:19

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    468
    Cattura.GIF
    posto qui il risultato perche' il link del post soprastante, mi sembra non funzionare

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    468
    essendo la tabella calendario, solo un "driver", nessuno vieta di creare l'intero calendario necessario,
    limitando poi la selezione nella query stessa, ampliando la clausola where
    codice:
      AND ( DATA_ANALISI BETWEEN '2019-01-01' AND '2019-01-31' )
    esempio

    Cattura.GIF

    ( ho tolto la somma delle presenze per far accettare l'immagine )

    ps, forse agevola anche il calcolo per quartili
    Ultima modifica di marino51; 10-06-2021 a 08:27

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 © 2021 vBulletin Solutions, Inc. All rights reserved.