Sql: среднее значение дат

Мне нужно написать запрос, чтобы вычислить среднее количество дней между покупками для каждого покупателя (без использования подзапросов).

    create table data {
customer varchar(20) not null,
bought date not null,
primary key (customer,bought)
}

Например,

insert into data (customer,bought)
values (‘John Smith’, date ‘2011-02-01’),
(‘Alice Cooper’, date ‘2011-02-01’),
(‘Bob Baker’, date ‘2011-02-01’),
(‘John Smith’, date ‘2011-02-02’),
(‘Bob Baker’, date ‘2011-02-02’),
(‘Bob Baker’, date ‘2011-02-03’),
(‘Bob Baker’, date ‘2011-02-04’),
(‘Bob Baker’, date ‘2011-02-05’),
(‘Bob Baker’, date ‘2011-02-06’),
(‘Bob Baker’, date ‘2011-02-07’),
(‘John Smith’, date ‘2011-02-07’),
(‘Alice Cooper’, date ‘2011-02-08’);

должен вернуть, что Джон Смит ждал 1 день затем 5 дней, то есть в среднем 3 дня. Элис Купер (!) Ждала 7 дней, поэтому ее в среднем 7. Боб Бейкер - ежедневный бегун, поэтому его средний показатель равен 1.

Я делал что-то вроде этого

select distinct customer, avg (bought) as average from data;

, но это не работает.

Любая помощь будет принята с благодарностью.

7
задан user640072 14 March 2011 в 21:34
поделиться