Domanda

Ho una tabella (partecipanti) che ha più colonne che potrebbero essere tutte distinte. Due colonne di particolare interesse in questa query sono userID e programID Ho una domanda in due parti qui.

  1. Voglio essere in grado di acquisire l'elenco di tutti gli ID utente che compaiono più di una volta in questa tabella. Come faccio a farlo?
  2. Voglio essere in grado di acquisire il conteggio di tutti gli ID programma in cui lo stesso ID utente appare in più ID programma. (Conteggio I.E. dei programmi in cui appare lo stesso ID utente in 2 programmi, conteggio dei programmi in cui lo stesso USErID appare in 3 programmi, ecc.)  Ad esempio:

     programID: prog1
        userID: uid1
        userID: uid3
        userID: uid12
     programID: prog2
        userID: uid3
        userID: uid5
        userID: uid14
        userID: uid27
     programID: prog3
        userID: uid3
        userID: uid7
        userID: uid14
        userID: uid30
     programID: prog4
        userID: uid1
    

    Risultati attesi:      userID count = 2; programmi = 3      userID count = 3; programmi = 3

Qualcuno può aiutarmi per favore con questo.

il mio codice attuale per la domanda 1 è:

    SELECT 
    WPP.USERID, 
    WPI.EMAIL, 
    WPI.FIRSTNAME, 
    WPI.LASTNAME, 
    WPI.INSTITUTION 
    FROM WEBPROGRAMPARTICIPANTS WPP 
    INNER JOIN WEBPERSONALINFO WPI 
    ON WPP.USERID = WPI.USERID 
    INNER JOIN WEBPROGRAMS WP 
    ON WPP.PROGRAMCODE = WP.PROGRAMCODE 
    WHERE 
    WP.PROGRAMTYPE IN ('1','2','3','4','5','6', '9', '10') 
    GROUP BY 
    WPP.USERID, 
    WPI.EMAIL, 
    WPI.FIRSTNAME, 
    WPI.LASTNAME, 
    WPI.INSTITUTION 
    HAVING COUNT(WPP.USERID) > 1
    ORDER BY WPI.EMAIL
È stato utile?

Soluzione 3

Questo è stato un problema dalla mia parte, con un passo logico che è stato lasciato fuori.

Altri suggerimenti

1.

select userID , SUM(userID ) AS Count 
from Preparations 
group by userID where Count > 1

La tua richiesta per la prima parte sembra buona. Ecco la tua domanda per la parte 2:

SELECT DISTINCT p1.programID, COUNT(p1.userID) AS Multiple
FROM participants p1
JOIN participants p2 ON p2.userID = p1.userID
GROUP BY p1.userID, programID
ORDER BY Multiple, programID

Elenca ID programma e il numero di altri ID programma in cui appare lo stesso ID utente per ciascun ID programma. Penso che i risultati previsti siano errati per i dati di esempio. Dovrebbe essere:

conteggio ID utente = 1; programmi = 3; userID count = 2; programmi = 4; userID count = 3; programmi = 3;

È possibile utilizzare quanto sopra come sottoquery (tabella derivata) se si desidera ottimizzare i risultati in modo che assomiglino maggiormente ai risultati previsti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top