Выбор уникальных логинов в данный период времени - PullRequest
0 голосов
/ 13 декабря 2010

Мой 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.

1 Ответ

2 голосов
/ 13 декабря 2010
Query query = em.createQuery(
                "SELECT COUNT(DISTINCT s.userId) FROM UserSession s " +
                "WHERE s.loginTime >= :fromTime " +
                   " AND s.loginTime < :toTime " +
        );

Источник: http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/queryhql.html#queryhql-aggregation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...