Мой SQL немного ржавый, а JPQL для меня совершенно новый. У меня есть таблица с записанными событиями входа в систему, которые имеют идентификатор пользователя и время. Я пытаюсь выбрать уникальный номер присутствующего идентификатора пользователя в списке событий входа в систему, произошедших за указанный период времени:
Query query = em.createQuery(
"SELECT COUNT(*) FROM ( " +
"SELECT DISTINCT s.userId FROM UserSession s " +
"WHERE s.loginTime >= :fromTime " +
" AND s.loginTime < :toTime " +
") "
);
query.setParameter("fromTime", new Date(fromTime));
query.setParameter("toTime", new Date(toTime));
Это дает мне ошибку синтаксического анализа ((
после FROM
является неожиданным), так что это явно не тот путь. Что мне делать вместо этого?
Пример. Если у меня есть записи {A, B, B, A, A, C, A, B, D}, все в диапазоне дат, я бы хотел, чтобы запрос возвратил 4.