Доброго вечера!
у меня есть 2 таблицы Orders
и Customers
.
В первой – Orders
есть столбец CustomerID
(который совпадает с CustomerID в таблице Customers
)
Во второй – Customers
таблице есть столбец Contactname
и Country
.
Навидите пожалуйста на мысль как можно посчитать количество покупок для каждого покупателя?
на всякий случай прилагаю схему БД схема бд
задан 4 фев 2017 в 17:20
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
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 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, этот пользователь не попадает в выборку. Т.Е. при задании любой даты я хочу получить список всех пользователей которые существуют, а поле Сумма и Количество заказов по дате заказа.
Содержание
- Формулы количества и суммы в Excel
- Формулы количества Excel
- СЧЁТ
- СЧЁТЗ
- СЧИТАТЬПУСТОТЫ
- СЧЁТЕСЛИ
- СЧЁТЕСЛИМН
- Формулы суммы Excel
- СУММ
- СУММЕСЛИ
- СУММЕСЛИМН
- Функция СЧЁТЕСЛИ и подсчет количества значения ячейки в Excel
- Примеры использования функции СЧЁТЕСЛИ в Excel
- Подсчет количества определенного значения ячейки в Excel при условии
- Статистический анализ посещаемости с помощью функции СЧЁТЕСЛИ в Excel
- Особенности использования функции СЧЁТЕСЛИ в Excel
- Подсчет количества значений в столбце в Microsoft Excel
- Процедура подсчета значений в столбце
- Способ 1: индикатор в строке состояния
- Способ 2: оператор СЧЁТЗ
- Способ 3: оператор СЧЁТ
- Способ 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
Функция имеет следующую синтаксическую запись:
=СЧЕТЕСЛИ( диапазон; критерий )
- диапазон – обязательный аргумент, принимающий ссылку на одну либо несколько ячеек, в которых требуется определить число совпадений с указанным критерием.
- критерий – условие, согласно которому выполняется расчет количества совпадений в рассматриваемом диапазоне. Условием могут являться логическое выражение, числовое значение, текстовая строка, значение типа Дата, ссылка на ячейку.
- При подсчете числа вхождений в диапазон в соответствии с двумя различными условиями, диапазон ячеек можно рассматривать как множество, содержащее два и более непересекающихся подмножеств. Например, в таблице «Мебель» необходимо найти количество столов и стульев. Для вычислений используем выражение =СЧЁТЕСЛИ(B3:B200;»*стол*»)+СЧЁТЕСЛИ(B3:B200;»*стул*»).
- Если в качестве критерия указана текстовая строка, следует учитывать, что регистр символов не имеет значения. Например, функция СЧЁТЕСЛИ(A1:A2;»Петров») вернет значение 2, если в ячейках A1 и A2 записаны строки «петров» и «Петров» соответственно.
- Если в качестве аргумента критерий передана ссылка на пустую ячейку или пустая строка «», результат вычисления для любого диапазона ячеек будет числовое значение 0 (нуль).
- Функция может быть использована в качестве формулы массива, если требуется выполнить расчет числа ячеек с данными, удовлетворяющим сразу нескольким критериям. Данная особенность будет рассмотрена в одном из примеров.
- Рассматриваемая функция может быть использована для определения количества совпадений как по одному, так и сразу по нескольким критериям поиска. В последнем случае используют две и более функции СЧЁТЕСЛИ, возвращаемые результаты которых складывают или вычитают. Например, в ячейках A1:A10 хранится последовательность значений от 1 до 10. Для расчета количества ячеек с числами больше 3 и менее 8 необходимо выполнить следующие действия:
- записать первую функцию СЧЁТЕСЛИ с критерием «>3»;
- записать вторую функцию с критерием «>=8»;
- определить разницу между возвращаемыми значениями =СЧЁТЕСЛИ(A1:10;»>3″)-СЧЁТЕСЛИ(A1:A10;»>=8″). То есть, вычесть из множества (3;+∞) подмножество [8;+∞).
Источник
Подсчет количества значений в столбце в Microsoft Excel
В некоторых случаях перед пользователем ставится задача не подсчета суммы значений в столбце, а подсчета их количества. То есть, попросту говоря, нужно подсчитать, сколько ячеек в данном столбце заполнено определенными числовыми или текстовыми данными. В Экселе существует целый ряд инструментов, которые способны решить указанную проблему. Рассмотрим каждый из них в отдельности.
Процедура подсчета значений в столбце
В зависимости от целей пользователя, в Экселе можно производить подсчет всех значений в столбце, только числовых данных и тех, которые соответствуют определенному заданному условию. Давайте рассмотрим, как решить поставленные задачи различными способами.
Способ 1: индикатор в строке состояния
Данный способ самый простой и требующий минимального количества действий. Он позволяет подсчитать количество ячеек, содержащих числовые и текстовые данные. Сделать это можно просто взглянув на индикатор в строке состояния.
Для выполнения данной задачи достаточно зажать левую кнопку мыши и выделить весь столбец, в котором вы хотите произвести подсчет значений. Как только выделение будет произведено, в строке состояния, которая расположена внизу окна, около параметра «Количество» будет отображаться число значений, содержащихся в столбце. В подсчете будут участвовать ячейки, заполненные любыми данными (числовые, текстовые, дата и т.д.). Пустые элементы при подсчете будут игнорироваться.
В некоторых случаях индикатор количества значений может не высвечиваться в строке состояния. Это означает то, что он, скорее всего, отключен. Для его включения следует кликнуть правой кнопкой мыши по строке состояния. Появляется меню. В нем нужно установить галочку около пункта «Количество». После этого количество заполненных данными ячеек будет отображаться в строке состояния.
К недостаткам данного способа можно отнести то, что полученный результат нигде не фиксируется. То есть, как только вы снимете выделение, он исчезнет. Поэтому, при необходимости его зафиксировать, придется записывать полученный итог вручную. Кроме того, с помощью данного способа можно производить подсчет только всех заполненных значениями ячеек и нельзя задавать условия подсчета.
Способ 2: оператор СЧЁТЗ
С помощью оператора СЧЁТЗ, как и в предыдущем случае, имеется возможность подсчета всех значений, расположенных в столбце. Но в отличие от варианта с индикатором в панели состояния, данный способ предоставляет возможность зафиксировать полученный результат в отдельном элементе листа.
Главной задачей функции СЧЁТЗ, которая относится к статистической категории операторов, как раз является подсчет количества непустых ячеек. Поэтому мы её с легкостью сможем приспособить для наших нужд, а именно для подсчета элементов столбца, заполненных данными. Синтаксис этой функции следующий:
Всего у оператора может насчитываться до 255 аргументов общей группы «Значение». В качестве аргументов как раз выступают ссылки на ячейки или диапазон, в котором нужно произвести подсчет значений.
- Выделяем элемент листа, в который будет выводиться итоговый результат. Щелкаем по значку «Вставить функцию», который размещен слева от строки формул.
Как видим, в отличие от предыдущего способа, данный вариант предлагает выводить результат в конкретный элемент листа с возможным его сохранением там. Но, к сожалению, функция СЧЁТЗ все-таки не позволяет задавать условия отбора значений.
Способ 3: оператор СЧЁТ
С помощью оператора СЧЁТ можно произвести подсчет только числовых значений в выбранной колонке. Он игнорирует текстовые значения и не включает их в общий итог. Данная функция также относится к категории статистических операторов, как и предыдущая. Её задачей является подсчет ячеек в выделенном диапазоне, а в нашем случае в столбце, который содержит числовые значения. Синтаксис этой функции практически идентичен предыдущему оператору:
Как видим, аргументы у СЧЁТ и СЧЁТЗ абсолютно одинаковые и представляют собой ссылки на ячейки или диапазоны. Различие в синтаксисе заключается лишь в наименовании самого оператора.
- Выделяем элемент на листе, куда будет выводиться результат. Нажимаем уже знакомую нам иконку «Вставить функцию».
- После запуска Мастера функций опять перемещаемся в категорию «Статистические». Затем выделяем наименование «СЧЁТ» и щелкаем по кнопке «OK».
- После того, как было запущено окно аргументов оператора СЧЁТ, следует в его поле внести запись. В этом окне, как и в окне предыдущей функции, тоже может быть представлено до 255 полей, но, как и в прошлый раз, нам понадобится всего одно из них под названием «Значение1». Вводим в это поле координаты столбца, над которым нам нужно выполнить операцию. Делаем это все тем же образом, каким выполняли данную процедуру для функции СЧЁТЗ: устанавливаем курсор в поле и выделяем колонку таблицы. После того, как адрес столбца был занесен в поле, жмем на кнопку «OK».
- Результат тут же будет выведен в ячейку, которую мы определили для содержания функции. Как видим, программа подсчитала только ячейки, которые содержат числовые значения. Пустые ячейки и элементы, содержащие текстовые данные, в подсчете не участвовали.
Способ 4: оператор СЧЁТЕСЛИ
В отличие от предыдущих способов, использование оператора СЧЁТЕСЛИ позволяет задавать условия, отвечающие значения, которые будут принимать участие в подсчете. Все остальные ячейки будут игнорироваться.
Оператор СЧЁТЕСЛИ тоже причислен к статистической группе функций Excel. Его единственной задачей является подсчет непустых элементов в диапазоне, а в нашем случае в столбце, которые отвечают заданному условию. Синтаксис у данного оператора заметно отличается от предыдущих двух функций:
Аргумент «Диапазон» представляется в виде ссылки на конкретный массив ячеек, а в нашем случае на колонку.
Аргумент «Критерий» содержит заданное условие. Это может быть как точное числовое или текстовое значение, так и значение, заданное знаками «больше» (>), «меньше» ( ) и т.д.
Посчитаем, сколько ячеек с наименованием «Мясо» располагаются в первой колонке таблицы.
- Выделяем элемент на листе, куда будет производиться вывод готовых данных. Щелкаем по значку «Вставить функцию».
- В Мастере функций совершаем переход в категорию «Статистические», выделяем название СЧЁТЕСЛИ и щелкаем по кнопке «OK».
- Производится активация окошка аргументов функции СЧЁТЕСЛИ. Как видим, окно имеет два поля, которые соответствуют аргументам функции.
В поле «Диапазон» тем же способом, который мы уже не раз описывали выше, вводим координаты первого столбца таблицы.
В поле «Критерий» нам нужно задать условие подсчета. Вписываем туда слово «Мясо».
После того, как вышеуказанные настройки выполнены, жмем на кнопку «OK».
Давайте немного изменим задачу. Теперь посчитаем количество ячеек в этой же колонке, которые не содержат слово «Мясо».
- Выделяем ячейку, куда будем выводить результат, и уже описанным ранее способом вызываем окно аргументов оператора СЧЁТЕСЛИ.
В поле «Диапазон» вводим координаты все того же первого столбца таблицы, который обрабатывали ранее.
В поле «Критерий» вводим следующее выражение:
То есть, данный критерий задает условие, что мы подсчитываем все заполненные данными элементы, которые не содержат слово «Мясо». Знак «<>» означает в Экселе «не равно».
После введения этих настроек в окне аргументов жмем на кнопку «OK».
Теперь давайте произведем в третьей колонке данной таблицы подсчет всех значений, которые больше числа 150.
- Выделяем ячейку для вывода результата и производим переход в окно аргументов функции СЧЁТЕСЛИ.
В поле «Диапазон» вводим координаты третьего столбца нашей таблицы.
В поле «Критерий» записываем следующее условие:
Это означает, что программа будет подсчитывать только те элементы столбца, которые содержат числа, превышающие 150.
Далее, как всегда, жмем на кнопку «OK».
Таким образом, мы видим, что в 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