Количество SQL общее количество дней по клиентам

#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 ()… Теперь это работает…