#sql
Вопрос:
У меня есть таблица customer
, которая содержит 2 столбца, 1 customer_id
столбец, а другой столбец с именем даты order_date
, в котором записывается, в какие даты клиенты приобрели продукт. Теперь я хочу подсчитать, за сколько дней каждый клиент зашел и сделал покупку. Я попытался сделать следующее, но получил только сообщение об ошибке, в котором говорится sum(date)
, что его не существует.
select customer_id, sum(order_date)
from customer;
Как я могу сделать это правильно?
—- Редактирование, добавление запроса для создания таблицы:
CREATE TABLE sales (
"customer_id" VARCHAR(1),
"order_date" DATE
);
INSERT INTO sales
("customer_id", "order_date")
VALUES
('A', '2021-01-01'),
('A', '2021-01-01'),
('A', '2021-01-07'),
('A', '2021-01-10'),
('A', '2021-01-11'),
('A', '2021-01-11'),
('B', '2021-01-01'),
('B', '2021-01-02'),
('B', '2021-01-04'),
('B', '2021-01-11'),
('B', '2021-01-16'),
('B', '2021-02-01'),
('C', '2021-01-01'),
('C', '2021-01-01'),
('C', '2021-01-07');
Комментарии:
1. Почему столбец является
order_date
datetime
столбцом, если в нем хранится только информация о дате, а не о времени?2.
sum(date)
не существует, ноsum(order_date)
существует — пожалуйста, исправьте свой пост — и, пожалуйста, опубликуйте свое полноеCREATE TABLE customer
заявление.3. Я добавил запрос для создания таблицы. И
sum(date)
это не ошибка, это именно то сообщение об ошибке, которое я получил.4. Нам все еще нужно, чтобы вы опубликовали свое
CREATE TABLE
заявление — без этого мы действительно не сможем вам помочь.5. Извините, я думал, что включил это…
Ответ №1:
Вам понадобится только это:
SELECT
customer_id,
COUNT( DISTINCT "order_date" ) AS count_days_they_bought_something
FROM
sales
GROUP BY
customer_id
Комментарии:
1. Спасибо… Я начал с Count(distinct order_date), и это не сработало, поэтому я попробовал функцию sum ()… Теперь это работает…