# Report Dashboard - Visite Utente

**URL:** <https://meta.discourse.org/t/dashboard-report-user-visits/294620>\
**Category:** Data & reporting\
**Tags:** sql-query, dashboard-reports, dashboard-sql\
**Created:** [8 Febbraio 2024, 12:44am UTC](https://meta.discourse.org/t/dashboard-report-user-visits/294620 "2024-02-08T00:44:12Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![SaraDev](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saradev/32/335139_2.png) [@SaraDev](https://meta.discourse.org/u/SaraDev)\
**Post date:** [8 Febbraio 2024, 12:44am UTC](https://meta.discourse.org/t/dashboard-report-user-visits/294620/1 "2024-02-08T00:44:12Z")

</div>

Questa è una versione SQL del report di dashboard per le visite degli utenti e le visite degli utenti (mobile).

Questo report di dashboard fornisce informazioni sull’interazione degli utenti monitorando le visite giornaliere degli utenti. Gli amministratori possono filtrare i dati in base all’intervallo di date, all’appartenenza al gruppo e al tipo di dispositivo (mobile o non mobile).

Comprendere i modelli di visita degli utenti può aiutare gli amministratori a prendere decisioni informate per migliorare l’interazione degli utenti e la salute della community.

```sql
-- [params]
-- date :start_date = 2024-01-06
-- date :end_date = 2024-02-07
-- null text :group_name
-- boolean :mobile_views = false

SELECT uv.visited_at AS date,
       COUNT(DISTINCT uv.user_id) AS visits_count
FROM user_visits uv
LEFT JOIN group_users gu ON gu.user_id = uv.user_id
LEFT JOIN groups g ON g.id = gu.group_id AND (:group_name IS NULL OR g.name = :group_name)
WHERE uv.visited_at BETWEEN :start_date AND :end_date
AND (:group_name IS NULL OR g.name IS NOT NULL)
AND (:mobile_views = false OR uv.mobile = true)
GROUP BY uv.visited_at
ORDER BY uv.visited_at ASC

```

## Spiegazione della query SQL

La query SQL opera selezionando i dati dalla tabella `user_visits`, che registra le visite di ciascun utente alla piattaforma. I componenti principali della query sono spiegati di seguito:

- **Parametri**
  - `:start_date` e `:end_date` definiscono l’intervallo di date per il report. Entrambi i parametri di data accettano il formato data `AAAA-MM-GG`.
  - `:group_name` consente il filtraggio per nome di un gruppo utente specifico. Se non specificato, vengono inclusi i dati di tutti i gruppi.
  - `:mobile_views` determina se includere solo le visite da dispositivi mobili (`true`) o tutte le visite (`false`).

- **Selezione dei dati e operazioni di join** :
  - La query seleziona la data della visita (`visited_at`) e conta gli ID utente distinti (`user_id`) per calcolare il numero di visite uniche al giorno.
  - Esegue un `LEFT JOIN` con la tabella `group_users` per associare le visite degli utenti ai rispettivi gruppi, seguito da un altro `LEFT JOIN` con la tabella `groups` per filtrare per il nome del gruppo specificato, se presente.

- **Filtraggio** :
  - La clausola `WHERE` applica i filtri in base ai parametri di input:
    - Garantisce che vengano incluse solo le visite nell’intervallo di date specificato.
    - Filtra per nome del gruppo se specificato e garantisce che le visite vengano conteggiate per gli utenti appartenenti a quel gruppo.
    - Include solo le visite mobili se il parametro `:mobile_views` è impostato su `true`.

- **Raggruppamento e ordinamento** :
  - La query raggruppa i risultati per data della visita (`visited_at`) per aggregare i conteggi delle visite al giorno.
  - Ordina i risultati in ordine crescente per data, fornendo una visualizzazione cronologica delle visite degli utenti.

### Esempio di risultati

| data | visits\_count |
| --- | --- |
| 2024-01-06 | 67 |
| 2024-01-07 | 71 |
| 2024-01-08 | 88 |
| 2024-01-09 | 79 |
| 2024-01-10 | 78 |
| … | … |

---

_[View the full topic](https://meta.discourse.org/t/dashboard-report-user-visits/294620)._
