SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.03.2011 19:53:33

alexku
Участник
Зарегистрирован: 26.03.2011
Сообщений: 2

помогите с sql запросом

есть табличка:


CREATE TABLE registration
    (
    id_reg INTEGER,
    event INTEGER
    CHECK (event IN (0, 1)),
    number_auto VARCHAR(20),
    id_place INTEGER,
    currently_time TIMESTAMP,
    id_security INTEGER,
    PRIMARY KEY(id_reg),
    FOREIGN KEY(number_auto) REFERENCES auto(number_auto) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY(id_security) REFERENCES security(id_security) ON UPDATE CASCADE,
    FOREIGN KEY(id_place) REFERENCES m_parking(id_place) ON UPDATE CASCADE
    );

Нужно при max(currently_time) проанализировать event, если event=0, то count++, если event=1 то ни плюсуем. при этом сделать группировку по number_auto

пример:
num_auto | event | currently_time
1 0 14
2 0 18
2 1 19
2 0 20

sum = 2

Сделал как-то так:

SELECT number_auto, max(currently_time) max_time, sum(case when event=0 then 1 end) event FROM registration
GROUP BY number_auto;
 

Но в запросе он выбирает из всех значений, а не конкретно из max(currently_time). Как связать sum с max(currently_time)?

Неактивен

 

#2 27.03.2011 00:24:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: помогите с sql запросом

Сделайте просто
FROM registration
JOIN (SELECT MAX(currently_time) AS currently_time FROM registration) s USING (currently_time)?

Неактивен

 

#3 27.03.2011 20:25:29

alexku
Участник
Зарегистрирован: 26.03.2011
Сообщений: 2

Re: помогите с sql запросом

связал так:
HAVING max(currently_time) = max(case when event = 0 then currently_time end));

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson