Для решения вашей задачи вам нужно обращаться к данным из таблицы, группировать их по неделям и проверять, были ли записи для каждого пользователя на каждую неделю 2020 года.
Вот пример SQL-запроса, который это реализует:
```sql
WITH WeekNumbers AS (
SELECT
DATE_TRUNC('week', DATE '2020-01-01' + INTERVAL '1 week' * generate_series(0, 51)) AS week_start
),
UserLogins AS (
SELECT
LOGIN,
DATE_TRUNC('week', LOGON_DATETIME) AS week_start
FROM
your_table_name
WHERE
LOGON_DATETIME >= '2020-01-01' AND LOGON_DATETIME < '2021-01-01'
GROUP BY
LOGIN, week_start
),
WeeklyLogins AS (
SELECT
wn.week_start,
ul.LOGIN
FROM
WeekNumbers wn
LEFT JOIN
UserLogins ul
ON
wn.week_start = ul.week_start
)
SELECT
LOGIN
FROM
WeeklyLogins
GROUP BY
LOGIN
HAVING
COUNT(DISTINCT week_start) = 52;
```
### Объяснение запросов:
1. **WeekNumbers**: Мы создаем список недель в 2020 году, начиная с 1 января и добавляя интервал по неделям. У нас получится 52 недели.
2. **UserLogins**: Мы выбираем логины пользователей и обрезаем даты входа до начала недели. Мы фильтруем данные так, чтобы оставались только все логины в 2020 году.
3. **WeeklyLogins**: Затем мы соединяем списки недель и логинов, чтобы получить все логины за каждую неделю. Это позволяет нам увидеть, сколько раз пользователи логинились на каждой отдельной неделе.
4. В финальном селекте мы группируем по логинам и используем HAVING, чтобы оставить только тех пользователей, которые логинились на всех 52 неделях.
Обратите внимание, что имена ваших таблиц и столбцов должны соответствовать тому, что у вас есть в базе данных. В результате запроса вы получите список уникальных логинов пользователей, которые логинились хотя бы раз в каждую неделю 2020 года.