Как найти число заказов

Доброго вечера!
у меня есть 2 таблицы Orders и Customers.
В первой – Orders есть столбец CustomerID (который совпадает с CustomerID в таблице Customers)
Во второй – Customersтаблице есть столбец Contactname и Country .
Навидите пожалуйста на мысль как можно посчитать количество покупок для каждого покупателя?

на всякий случай прилагаю схему БД схема бд

задан 4 фев 2017 в 17:20

DoneBass's user avatar

0

select c.ContactName, c.Country, count(o.Id) from Customers c
left join Orders o on c.Id=o.CustomerId
where c.Country='France'
group by c.Id, c.ContactName, c.Country
having count(o.Id)>=1

Если нужно отфильтровать по наличию определенного количества заказов – добавляем having count(o.Id)>=N, где N – минимальное количество заказов.

Фиддл

ответ дан 5 фев 2017 в 6:58

Zufir's user avatar

ZufirZufir

5,0481 золотой знак17 серебряных знаков33 бронзовых знака

Уже поздно, что-то голова не варит:

SELECT Customers.Contactname, 
       Customers.Country, 
       (SELECT COUNT(*) FROM Orders WHERE Customers.CustomerID = Orders.CustomerID) AS CustomerOrders
       FROM Customers
       WHERE CustomerOrders > 1
       ORDER BY CustomerOrders DESC

ответ дан 4 фев 2017 в 19:17

Daniel Protopopov's user avatar

Daniel ProtopopovDaniel Protopopov

3,2752 золотых знака12 серебряных знаков21 бронзовый знак

6

Доброго времени суток, у меня есть 2 таблицы:
Пользователи: КодПользователя, Имя
Заказы: КодЗаказа, КодПользователя, КодКлиента, ДатаЗаказа, СуммаЗаказа

я хочу получать за определенную дату количество и сумму все заказов пользователя, если в этот период нету заказов у пользователя получать 0.

Я пришёл к вот такому варианту:

SELECT 
  `Пользователи`.`Имя`,
  count(`Заказы`.`КодЗаказа`) as counts,
  sum(`Заказы`.`СуммаЗаказа`) as sums
FROM
  `Пользователи`
LEFT JOIN 
  `Заказы` on `Пользователи`.`КодПользователя` = `Заказы`.`КодПользователя`
WHERE
  `Заказы`.`ДатаЗаказа` BETWEEN '2021-03-29' AND '2021-03-30' OR
  `Заказы`.`ДатаЗаказа` IS NULL
  
group BY
  `Пользователи`.`КодПользователя`

Но я столкнулся с проблемой, а именно если у пользователя есть заказ но 28.03, этот пользователь не попадает в выборку. Т.Е. при задании любой даты я хочу получить список всех пользователей которые существуют, а поле Сумма и Количество заказов по дате заказа.

Содержание

  1. Формулы количества и суммы в Excel
  2. Формулы количества Excel
  3. СЧЁТ
  4. СЧЁТЗ
  5. СЧИТАТЬПУСТОТЫ
  6. СЧЁТЕСЛИ
  7. СЧЁТЕСЛИМН
  8. Формулы суммы Excel
  9. СУММ
  10. СУММЕСЛИ
  11. СУММЕСЛИМН
  12. Функция СЧЁТЕСЛИ и подсчет количества значения ячейки в Excel
  13. Примеры использования функции СЧЁТЕСЛИ в Excel
  14. Подсчет количества определенного значения ячейки в Excel при условии
  15. Статистический анализ посещаемости с помощью функции СЧЁТЕСЛИ в Excel
  16. Особенности использования функции СЧЁТЕСЛИ в Excel
  17. Подсчет количества значений в столбце в Microsoft Excel
  18. Процедура подсчета значений в столбце
  19. Способ 1: индикатор в строке состояния
  20. Способ 2: оператор СЧЁТЗ
  21. Способ 3: оператор СЧЁТ
  22. Способ 4: оператор СЧЁТЕСЛИ

Формулы количества и суммы в Excel

Формулы количества и суммы в Excel — это самые популярные формулы Эксель, которые чаще всего могут понадобиться для составления различных видов отчетов. При этом может понадобиться выбрать не все значения подряд. Иногда нужны формулы Excel, с помощью которых нужно выбрать и посчитать значения количества и суммы, удовлетворяющие определенным условиям. Для решения этих задач подходят следующие формулы:

Формулы количества Excel

СЧЁТ

Подсчитывает количество ячеек, содержащих числа.
Учитывает аргументы, являющиеся числами, датами или текстовым представлением чисел (например, число, заключенное в кавычки, такое как «1»).

Синтаксис: СЧЁТ(значение1;[значение2];…)
Пример формулы: =СЧЁТ(A1:A20)

СЧЁТЗ

Подсчитывает количество заполненных ячеек в диапазоне.

Учитывает данные любого типа, включая значения ошибок и пустой текст ( «»). Например, если в диапазоне есть формула, которая возвращает пустую строку, функция СЧЁТЗ учитывает это значение. Функция СЧЁТЗ не учитывает пустые ячейки.

Синтаксис: СЧЁТЗ(значение1;[значение2];…)
Пример формулы: =СЧЁТЗ(A2:A7)

СЧИТАТЬПУСТОТЫ

Подсчитывает пустые ячейки в указанном выше диапазоне.

Синтаксис: СЧИТАТЬПУСТОТЫ (значение1;[значение2];…)
Пример формулы: =СЧИТАТЬПУСТОТЫ(A2:A7)

СЧЁТЕСЛИ

Подсчитывает количество ячеек, отвечающих определенному условию (например, число поставщиков из определенного города). Функция СЧЁТЕСЛИ не учитывает регистр символов.

Синтаксис: =СЧЁТЕСЛИ(где нужно искать; что нужно найти)
Пример формулы: =СЧЁТЕСЛИ(A2:A5;»Лондон»); =СЧЁТЕСЛИ(A2:A5;A4)

СЧЁТЕСЛИМН

Подсчитывает количество ячеек, которые удовлетворяют нескольким условиям. Важно: Каждый дополнительный диапазон должен состоять из такого же количества строк и столбцов, что и аргумент диапазон_условия1. Эти диапазоны могут не находиться рядом друг с другом.

Синтаксис: =СЧЁТЕСЛИМН(диапазон_условия1;условие1;[диапазон_условия2;условие2];…)
Пример формулы: =СЧЁТЕСЛИМН(B2:B5,»=Да»,F2:F5,»>1″)

Формулы суммы Excel

СУММ

Суммирует значения. Вы можете складывать отдельные значения и диапазоны ячеек.

Пример формулы: =СУММ(A2:A10), =СУММ(A2:A10;C2:C10)

СУММЕСЛИ

Суммирует значения, которые соответствуют указанному условию. Можно задать условие для текущего диапазона, а просуммировать соответствующие значения из другого диапазона.
Например, формула =СУММЕСЛИ(B3:B9; «Яблоки»; C3:C9) суммирует только те значения из диапазона C3:C9, для которых соответствующие значения из диапазона B2:B5 равны «Яблоки».

Синтаксис: = СУММЕСЛИ(диапазон; условие;[диапазон_суммирования])
Пример формулы: =СУММЕСЛИ(B2:B25;»> 5″), =СУММЕСЛИ(A2:A7;»Фрукты»;C2:C7)

СУММЕСЛИМН

Суммирует все значения, которые удовлетворяют нескольким условиям. Например, с помощью функции СУММЕСЛИМН можно найти число всех поставщиков, (1) находящихся в определенном городе, (2)которые продают определенный товар.

Синтаксис: СУММЕСЛИМН(диапазон_суммирования; диапазон_условия1; условие1; [диапазон_условия2; условие2]; …)
Пример формулы: =СУММЕСЛИМН(B2:B9; C2:C9; «Рязань»; E2:E9; «Бананы»)

Источник

Функция СЧЁТЕСЛИ и подсчет количества значения ячейки в Excel

Функция СЧЁТЕСЛИ в Excel используется для подсчета количества ячеек в рассматриваемом диапазоне, содержащиеся данные в которых соответствуют критерию, переданному в качестве второго аргумента данной функции, и возвращает соответствующее числовое значение.

Функция СЧЁТЕСЛИ может быть использована для анализа числовых значений, текстовых строк, дат и данных другого типа. С ее помощью можно определить количество неповторяющихся значений в диапазоне ячеек, а также число ячеек с данными, которые совпадают с указанным критерием лишь частично. Например, таблица Excel содержит столбец с ФИО клиентов. Для определения количества клиентов-однофамильцев с фамилией Иванов можно ввести функцию =СЧЁТЕСЛИ(A1:A300;”*Иванов*”). Символ «*» указывает на любое количество любых символов до и после подстроки «Иванов».

Примеры использования функции СЧЁТЕСЛИ в Excel

Пример 1. В таблице Excel содержатся данные о продажах товаров в магазине бытовой техники за день. Определить, какую часть от проданной продукции составляет техника фирмы Samsung.

Вид исходной таблицы данных:

Для расчета используем формулу:

  • C3:C17 – диапазон ячеек, содержащих названия фирм проданной техники;
  • «Samsung» – критерий поиска (точное совпадение);
  • A17 – ячейка, хранящая номер последней продажи, соответствующий общему числу продаж.

Доля проданной продукции техники фирмы Samsung в процентах составляет – 40%.

Подсчет количества определенного значения ячейки в Excel при условии

Пример 2. По итогам сдачи экзаменов необходимо составить таблицу, в которой содержатся данные о количестве студентов, сдавших предмет на 5, 4, 3 балла соответственно, а также тех, кто не сдал предмет.

Вид исходной таблицы:

Предварительно выделим ячейки E2:E5, введем приведенную ниже формулу:

  • B3:B19 – диапазон ячеек с оценками за экзамен;
  • D2:D5 – диапазон ячеек, содержащих критерии для подсчета числа совпадений.

В результате получим таблицу:

Статистический анализ посещаемости с помощью функции СЧЁТЕСЛИ в Excel

Пример 3. В таблице Excel хранятся данные о просмотрах страниц сайта за день пользователями. Определить число пользователей сайта за день, а также сколько раз за день на сайт заходили пользователи с логинами default и user_1.

Вид исходной таблицы:

Поскольку каждый пользователь имеет свой уникальный идентификатор в базе данных (Id), выполним расчет числа пользователей сайта за день по следующей формуле массива и для ее вычислений нажмем комбинацию клавиш Ctrl+Shift+Enter:

Выражение 1/СЧЁТЕСЛИ(A3:A20;A3:A20) возвращает массив дробных чисел 1/количество_вхождений, например, для пользователя с ником sam это значение равно 0,25 (4 вхождения). Общая сумма таких значений, вычисляемая функцией СУММ, соответствует количеству уникальных вхождений, то есть, числу пользователей на сайте. Полученное значение:

Для определения количества просмотренных страниц пользователями default и user_1 запишем формулу:

В результате расчета получим:

Особенности использования функции СЧЁТЕСЛИ в Excel

Функция имеет следующую синтаксическую запись:

=СЧЕТЕСЛИ( диапазон; критерий )

  • диапазон – обязательный аргумент, принимающий ссылку на одну либо несколько ячеек, в которых требуется определить число совпадений с указанным критерием.
  • критерий – условие, согласно которому выполняется расчет количества совпадений в рассматриваемом диапазоне. Условием могут являться логическое выражение, числовое значение, текстовая строка, значение типа Дата, ссылка на ячейку.
  1. При подсчете числа вхождений в диапазон в соответствии с двумя различными условиями, диапазон ячеек можно рассматривать как множество, содержащее два и более непересекающихся подмножеств. Например, в таблице «Мебель» необходимо найти количество столов и стульев. Для вычислений используем выражение =СЧЁТЕСЛИ(B3:B200;»*стол*»)+СЧЁТЕСЛИ(B3:B200;»*стул*»).
  2. Если в качестве критерия указана текстовая строка, следует учитывать, что регистр символов не имеет значения. Например, функция СЧЁТЕСЛИ(A1:A2;»Петров») вернет значение 2, если в ячейках A1 и A2 записаны строки «петров» и «Петров» соответственно.
  3. Если в качестве аргумента критерий передана ссылка на пустую ячейку или пустая строка «», результат вычисления для любого диапазона ячеек будет числовое значение 0 (нуль).
  4. Функция может быть использована в качестве формулы массива, если требуется выполнить расчет числа ячеек с данными, удовлетворяющим сразу нескольким критериям. Данная особенность будет рассмотрена в одном из примеров.
  5. Рассматриваемая функция может быть использована для определения количества совпадений как по одному, так и сразу по нескольким критериям поиска. В последнем случае используют две и более функции СЧЁТЕСЛИ, возвращаемые результаты которых складывают или вычитают. Например, в ячейках A1:A10 хранится последовательность значений от 1 до 10. Для расчета количества ячеек с числами больше 3 и менее 8 необходимо выполнить следующие действия:
  • записать первую функцию СЧЁТЕСЛИ с критерием «>3»;
  • записать вторую функцию с критерием «>=8»;
  • определить разницу между возвращаемыми значениями =СЧЁТЕСЛИ(A1:10;»>3″)-СЧЁТЕСЛИ(A1:A10;»>=8″). То есть, вычесть из множества (3;+∞) подмножество [8;+∞).

Источник

Подсчет количества значений в столбце в Microsoft Excel

В некоторых случаях перед пользователем ставится задача не подсчета суммы значений в столбце, а подсчета их количества. То есть, попросту говоря, нужно подсчитать, сколько ячеек в данном столбце заполнено определенными числовыми или текстовыми данными. В Экселе существует целый ряд инструментов, которые способны решить указанную проблему. Рассмотрим каждый из них в отдельности.

Процедура подсчета значений в столбце

В зависимости от целей пользователя, в Экселе можно производить подсчет всех значений в столбце, только числовых данных и тех, которые соответствуют определенному заданному условию. Давайте рассмотрим, как решить поставленные задачи различными способами.

Способ 1: индикатор в строке состояния

Данный способ самый простой и требующий минимального количества действий. Он позволяет подсчитать количество ячеек, содержащих числовые и текстовые данные. Сделать это можно просто взглянув на индикатор в строке состояния.

Для выполнения данной задачи достаточно зажать левую кнопку мыши и выделить весь столбец, в котором вы хотите произвести подсчет значений. Как только выделение будет произведено, в строке состояния, которая расположена внизу окна, около параметра «Количество» будет отображаться число значений, содержащихся в столбце. В подсчете будут участвовать ячейки, заполненные любыми данными (числовые, текстовые, дата и т.д.). Пустые элементы при подсчете будут игнорироваться.

В некоторых случаях индикатор количества значений может не высвечиваться в строке состояния. Это означает то, что он, скорее всего, отключен. Для его включения следует кликнуть правой кнопкой мыши по строке состояния. Появляется меню. В нем нужно установить галочку около пункта «Количество». После этого количество заполненных данными ячеек будет отображаться в строке состояния.

К недостаткам данного способа можно отнести то, что полученный результат нигде не фиксируется. То есть, как только вы снимете выделение, он исчезнет. Поэтому, при необходимости его зафиксировать, придется записывать полученный итог вручную. Кроме того, с помощью данного способа можно производить подсчет только всех заполненных значениями ячеек и нельзя задавать условия подсчета.

Способ 2: оператор СЧЁТЗ

С помощью оператора СЧЁТЗ, как и в предыдущем случае, имеется возможность подсчета всех значений, расположенных в столбце. Но в отличие от варианта с индикатором в панели состояния, данный способ предоставляет возможность зафиксировать полученный результат в отдельном элементе листа.

Главной задачей функции СЧЁТЗ, которая относится к статистической категории операторов, как раз является подсчет количества непустых ячеек. Поэтому мы её с легкостью сможем приспособить для наших нужд, а именно для подсчета элементов столбца, заполненных данными. Синтаксис этой функции следующий:

Всего у оператора может насчитываться до 255 аргументов общей группы «Значение». В качестве аргументов как раз выступают ссылки на ячейки или диапазон, в котором нужно произвести подсчет значений.

    Выделяем элемент листа, в который будет выводиться итоговый результат. Щелкаем по значку «Вставить функцию», который размещен слева от строки формул.

Как видим, в отличие от предыдущего способа, данный вариант предлагает выводить результат в конкретный элемент листа с возможным его сохранением там. Но, к сожалению, функция СЧЁТЗ все-таки не позволяет задавать условия отбора значений.

Способ 3: оператор СЧЁТ

С помощью оператора СЧЁТ можно произвести подсчет только числовых значений в выбранной колонке. Он игнорирует текстовые значения и не включает их в общий итог. Данная функция также относится к категории статистических операторов, как и предыдущая. Её задачей является подсчет ячеек в выделенном диапазоне, а в нашем случае в столбце, который содержит числовые значения. Синтаксис этой функции практически идентичен предыдущему оператору:

Как видим, аргументы у СЧЁТ и СЧЁТЗ абсолютно одинаковые и представляют собой ссылки на ячейки или диапазоны. Различие в синтаксисе заключается лишь в наименовании самого оператора.

  1. Выделяем элемент на листе, куда будет выводиться результат. Нажимаем уже знакомую нам иконку «Вставить функцию».
  2. После запуска Мастера функций опять перемещаемся в категорию «Статистические». Затем выделяем наименование «СЧЁТ» и щелкаем по кнопке «OK».
  3. После того, как было запущено окно аргументов оператора СЧЁТ, следует в его поле внести запись. В этом окне, как и в окне предыдущей функции, тоже может быть представлено до 255 полей, но, как и в прошлый раз, нам понадобится всего одно из них под названием «Значение1». Вводим в это поле координаты столбца, над которым нам нужно выполнить операцию. Делаем это все тем же образом, каким выполняли данную процедуру для функции СЧЁТЗ: устанавливаем курсор в поле и выделяем колонку таблицы. После того, как адрес столбца был занесен в поле, жмем на кнопку «OK».
  4. Результат тут же будет выведен в ячейку, которую мы определили для содержания функции. Как видим, программа подсчитала только ячейки, которые содержат числовые значения. Пустые ячейки и элементы, содержащие текстовые данные, в подсчете не участвовали.

Способ 4: оператор СЧЁТЕСЛИ

В отличие от предыдущих способов, использование оператора СЧЁТЕСЛИ позволяет задавать условия, отвечающие значения, которые будут принимать участие в подсчете. Все остальные ячейки будут игнорироваться.

Оператор СЧЁТЕСЛИ тоже причислен к статистической группе функций Excel. Его единственной задачей является подсчет непустых элементов в диапазоне, а в нашем случае в столбце, которые отвечают заданному условию. Синтаксис у данного оператора заметно отличается от предыдущих двух функций:

Аргумент «Диапазон» представляется в виде ссылки на конкретный массив ячеек, а в нашем случае на колонку.

Аргумент «Критерий» содержит заданное условие. Это может быть как точное числовое или текстовое значение, так и значение, заданное знаками «больше» (>), «меньше» ( ) и т.д.

Посчитаем, сколько ячеек с наименованием «Мясо» располагаются в первой колонке таблицы.

  1. Выделяем элемент на листе, куда будет производиться вывод готовых данных. Щелкаем по значку «Вставить функцию».
  2. В Мастере функций совершаем переход в категорию «Статистические», выделяем название СЧЁТЕСЛИ и щелкаем по кнопке «OK».
  3. Производится активация окошка аргументов функции СЧЁТЕСЛИ. Как видим, окно имеет два поля, которые соответствуют аргументам функции.

В поле «Диапазон» тем же способом, который мы уже не раз описывали выше, вводим координаты первого столбца таблицы.

В поле «Критерий» нам нужно задать условие подсчета. Вписываем туда слово «Мясо».

После того, как вышеуказанные настройки выполнены, жмем на кнопку «OK».

  • Оператор производит вычисления и выдает результат на экран. Как видим, в выделенной колонке в 63 ячейках содержится слово «Мясо».
  • Давайте немного изменим задачу. Теперь посчитаем количество ячеек в этой же колонке, которые не содержат слово «Мясо».

      Выделяем ячейку, куда будем выводить результат, и уже описанным ранее способом вызываем окно аргументов оператора СЧЁТЕСЛИ.

    В поле «Диапазон» вводим координаты все того же первого столбца таблицы, который обрабатывали ранее.

    В поле «Критерий» вводим следующее выражение:

    То есть, данный критерий задает условие, что мы подсчитываем все заполненные данными элементы, которые не содержат слово «Мясо». Знак «<>» означает в Экселе «не равно».

    После введения этих настроек в окне аргументов жмем на кнопку «OK».

  • В предварительно заданной ячейке сразу же отображается результат. Он сообщает о том, что в выделенном столбце находятся 190 элементов с данными, которые не содержат слово «Мясо».
  • Теперь давайте произведем в третьей колонке данной таблицы подсчет всех значений, которые больше числа 150.

      Выделяем ячейку для вывода результата и производим переход в окно аргументов функции СЧЁТЕСЛИ.

    В поле «Диапазон» вводим координаты третьего столбца нашей таблицы.

    В поле «Критерий» записываем следующее условие:

    Это означает, что программа будет подсчитывать только те элементы столбца, которые содержат числа, превышающие 150.

    Далее, как всегда, жмем на кнопку «OK».

  • После проведения подсчета Excel выводит в заранее обозначенную ячейку результат. Как видим, выбранный столбец содержит 82 значения, которые превышают число 150.
  • Таким образом, мы видим, что в Excel существует целый ряд способов подсчитать количество значений в столбце. Выбор определенного варианта зависит от конкретных целей пользователя. Так, индикатор на строке состояния позволяет только посмотреть количество всех значений в столбце без фиксации результата; функция СЧЁТЗ предоставляет возможность их число зафиксировать в отдельной ячейке; оператор СЧЁТ производит подсчет только элементов, содержащих числовые данные; а с помощью функции СЧЁТЕСЛИ можно задать более сложные условия подсчета элементов.

    Источник

    Вы бы использовали COUNT(DISTINCT ...) в других движках SQL:

    SELECT CID, 
           Count(DISTINCT O.OrderID) AS TotalOrders, 
           Sum(OI.Quantity*OI.SalePrice) AS TotalDollarAmount 
    FROM [Order] O
    INNER JOIN [OrderItem] OI
      ON O.OrderID = OI.OrderID
    GROUP BY CID 
    Order BY Count(DISTINCT O.OrderID) DESC
    

    Какой доступ к сожалению не поддерживает. Вместо этого вы можете сначала получить суммы заказа в долларах, а затем присоединиться к ним, прежде чем подсчитать количество заказов:

    SELECT CID,
           COUNT(Orders.OrderID) AS TotalOrders,
           SUM(OrderAmounts.DollarAmount) AS TotalDollarAmount
    FROM [Orders]
    INNER JOIN (SELECT OrderID, Sum(Quantity*SalePrice) AS DollarAmount 
          FROM OrderItems GROUP BY OrderID) AS OrderAmounts
      ON Orders.OrderID = OrderAmounts.OrderID
    GROUP BY CID
    ORDER BY Count(Orders.OrderID) DESC
    

    Если вам нужно включить клиентов, у которых есть заказы без товаров (необычно, но возможно), измените INNER JOIN в LEFT OUTER JOIN,

    I wanted to find the total number of orders placed by a customer till date and the last order date.

    Customer

    custome_id      customer_name
        1              JOHN
        2              ALEX
    

    Order

    order_id       customer_id        order_date      status
       R1              1              06/06/2013      completed
       R2              1              05/29/2013      completed
       B1091           1              01/17/2011      canceled
       B2192           1              12/24/2010      completed
    

    Note: order_id is not helpful to find last order as they are not incremental

    The query which I am trying is

    select customer.customer_id, customer.customer_name, order.order_id as last_order_id, max(order.order_date) as maxOrderDate,
      sum( case when order.status='completed' then 1 else 0) as completed_orders,
      count( order_id) as total_orders 
      from customer as customer inner join order as order
      on customer.customer_id = order.customer_id
      where customer.id = 1
      group by customer.customer_id, customer.customer_name, order.order_id
    

    Expecting results as

     customer_id  customer_name  Last_order_id  maxOrderDate   completed_orders   total_orders
        1                JOHN        R1            06/06/2013             3              4
    

    Добавить комментарий