У меня есть две таблицы, скажем, одна называется User, а другая называется Data

В каждом User есть много записей в таблице Data.

Таблица Data включает UserID и Dates.

Я хотел бы сделать SQL-запрос, где я получаю пользователей только с одной записи в месяц в 2019 году.

К сожалению, я понятия не имею, как это сделать.

Спасибо за помощь Андреас

-4
Andreas 29 Апр 2020 в 11:00

2 ответа

Вы должны действительно упомянуть свой тип базы данных. Относитесь к этому больше как к псевдокоду. Но если вы обновите свой вопрос, я могу обновить свой ответ

SELECT userID,year(Dates),count(distinct month(Dates))
FROM Data
WHERE year(Dates)=2019
GROUP BY UserId,year(Dates) having count(distinct month(Dates))=12
2
Gabriel Durac 29 Апр 2020 в 08:06

Не понятно, о чем вы спрашиваете, но ваш запрос может быть похож на ниже:

CREATE TABLE Data(UserId int,Dates date)
INSERT INTO Data(UserId,Dates) VALUES(1,'2020/04/28'),(1,'2020/04/29'),(2,'2020/04/29')

;WITH CTE AS (
SELECT UserId,ROW_NUMBER() OVER(PARTITION BY MONTH(Dates),UserId  ORDER BY UserId) AS rn FROM Data)
SELECT Distinct UserId FROM CTE WHERE rn >=1
1
Sandra Guilep Zouaoui Zandeh 29 Апр 2020 в 08:15