Genera query SQL

Genera una query SQL per contare e ordinare gli accessi univoci nell'ultimo mese

Puoi eseguire query direttamente su un modello e testare i risultati restituiti quando utilizzi valori parametro diversi con la console Cloud o chiamando direttamente l'API Vertex AI.

Prompt in formato libero

Considera una tabella con lo schema descritto di seguito.

  • Nome colonna - Descrizione
  • Nome utente: il nome utente dell'utente che ha eseguito l'accesso.
  • LicenseType: "MultiUse" o "SingleUse"
  • LoginTime: la data e l'ora dell'evento di accesso

In qualità di esperto di analisi dei dati, scrivi una query SQL che mi mostri l'elenco degli utenti, i tipi di licenza e il numero di giorni univoci in cui l'utente ha effettuato l'accesso negli ultimi tre mesi di calendario. Ordinalo in base al numero più alto di accessi mensile fino al numero più basso di accessi del mese.

Risposta

WITH MonthlyLogins AS (
SELECT
Username,
LicenseType,
DATE_TRUNC('month', LoginTime) AS LoginMonth,
COUNT(DISTINCT DATE(LoginTime)) AS UniqueLoginDays
FROM your_table
WHERE LoginTime >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '3 month')
GROUP BY Username, LicenseType, LoginMonth
)
SELECT
Username,
LicenseType,
SUM(UniqueLoginDays) AS TotalUniqueLoginDays
FROM MonthlyLogins
GROUP BY Username, LicenseType
ORDER BY TotalUniqueLoginDays DESC;

Spiegazione:

  1. WITH MonthlyLogins AS (...): definisce un'espressione di tabella comune (CTE, Common Table Expression) denominata MonthlyLogins per calcolare i giorni di accesso univoci per ciascun utente e tipo di licenza in ogni mese.
  2. SELECT ... FROM your_table WHERE LoginTime >= ...: consente di selezionare i dati pertinenti dalla tabella, filtrando gli eventi di accesso negli ultimi tre mesi.
  3. DATE_TRUNC('month', LoginTime) AS LoginMonth estrae l'inizio del mese dalla colonna LoginTime e lo assegna come LoginMonth.
  4. COUNT(DISTINCT DATE(LoginTime)) AS UniqueLoginDays: conteggia le date distinte degli accessi di ciascun mese, fornendoci il numero di giorni di accesso univoci.
  5. GROUP BY Username, LicenseType, LoginMonth (Raggruppa per nome utente, LicenseType, LoginMonth): raggruppa i risultati per nome utente, tipo di licenza e mese di accesso.
  6. SELECT ... FROM MonthlyLogins GROUP BY Username, LicenseType: seleziona il nome utente, il tipo di licenza e somma il valore UniqueLoginDays per ciascun utente e tipo di licenza per tutti i mesi.
  7. ORDER BY TotalUniqueLoginDays DESC: ordina i risultati in ordine decrescente in base al numero totale di giorni di accesso univoci.

Nota:

  • Sostituisci your_table con il nome effettivo della tabella.
  • Questa query presuppone che la colonna LoginTime sia un tipo di dati con timestamp o data/ora.
  • La funzione DATE_TRUNC può variare a seconda del sistema di database specifico.

Questa query ti fornirà un elenco di utenti, i loro tipi di licenza e il numero totale di giorni univoci in cui hanno eseguito l'accesso negli ultimi tre mesi, ordinati dal numero più alto al più basso di giorni di accesso.

Modello: gemini-1.5-flash-001
Temperatura: 1
Numero massimo di token di output: 8192
TopK: 40
TopP: 0,95