2016-08-14 4 views
0

У меня есть таблица вроде этого:Mysql подсчитывать с условием

+---------------+--------+-----------------+ 
| ReservationID | UserID | ReservationDate | 
+---------------+--------+-----------------+ 
|    1 | 10002 | 04_04_2016  | 
|    2 | 10003 | 04_04_2016  | 
|    3 | 10003 | 07_04_2016  | 
|    4 | 10002 | 04_04_2016  | 
|    5 | 10002 | 04_04_2016  | 
|    6 | 10002 | 06_04_2016  | 
+---------------+--------+-----------------+ 

Я использую этот запрос, чтобы подсчитать, сколько резервирования каждого моего пользователя есть:

SELECT UserID, COUNT(UserID) as Times FROM mytable GROUP BY UserID ORDER BY Times DESC 

И это дает мне этот результат:

+--------+-------+ 
| UserID | Times | 
+--------+-------+ 
| 10002 |  4 | 
| 10003 |  2 | 
+--------+-------+ 

Однако, я хочу сосчитать один, если у моего пользователя более одной брони в определенную дату. Например Пользователь 10002 имеет 3 резервирования на 04-04-2016, это должно быть рассчитывать 1. И я хочу, чтобы получить этот результат:

+--------+-------+ 
| UserID | Times | 
+--------+-------+ 
| 10002 |  2 | 
| 10003 |  2 | 
+--------+-------+ 

Как я могу получить его?

Благодаря

ответ

0

count Использование с distinct вместо:

SELECT UserID, COUNT(DISTINCT ReservationDate) as Times 
FROM mytable 
GROUP BY UserID 
ORDER BY Times DESC 
+0

10002 Пользователь имеет 3 резервирование на 04-04-2016, это должно быть рассчитывать 1. Это означает, что должно быть отношение на ReservationDate – berkist34

+0

@ berkist34 - извините, набрал слишком быстро. Я думаю, вам нужно «count (отдельное резервирование)»? – sgeddes

+0

Это сработало. Спасибо – berkist34

0
SELECT 
    m.UserID, 
    count(distinct lj.ReservationDate) as Times 
FROM mytable m 
    left join mytable lj on lj.UserID = m.UserId 
GROUP BY 
    m.UserId 
ORDER BY 
    Times 
+0

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

Смежные вопросы