Запрос с двумя count(), один из которых distinct

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Запрос с двумя count(), один из которых distinct

Re: Запрос с двумя count(), один из которых distinct

Фоб » 07 окт 2008, 12:05

Понятно, спасибо.

Re: Запрос с двумя count(), один из которых distinct

Игорь Акопян » 07 окт 2008, 10:03

если сервер позволяет, то можно сделать VIEW и обращаться к нему как к обычной таблице.

Re: Запрос с двумя count(), один из которых distinct

Фоб » 06 окт 2008, 16:33

Для цели обучения. Я придумывал сложные условия выборки и создавал запросы. И вот для упомянутых условий придумать ничего не удалось.

Ксати, как "это значение получить потом"? Могу ли я обращаться с новым запросом к таблице, являющейся результатом предыдущего запроса?

Re: Запрос с двумя count(), один из которых distinct

Игорь Акопян » 06 окт 2008, 11:05

а зачем вам
"количество уникальных типов оплаты для каждого сотрудника"
?
если исключить последний count то вы получите запрос из которого это значение можно будет получить потом ;) для какой цели оно надо?

Запрос с двумя count(), один из которых distinct

Фоб » 02 окт 2008, 13:02

Объясню на примере демонстрационной базы DBDEMOS, поставляемой с билдером.

Есть таблица сотрудников и таблица заказов. У каждого из заказов один из типов оплаты (Visa, Check, Credit и т.д. всего штук 8 уникальных).

Надо вывести список сотрудников, и для каждого указать количество уникальных типов оплаты среди всех проведённых им заказов, а также, вывести количество заказов каждого типа оплаты.

Например, если у сотрудника 4 заказа оплачены визой и 3 чеком, должно вывестись, что у него 2 уникальных типа, и для каждого типа - количество.

Загвоздка в том, что если выводится каждый из типов, поле count(distinct ...) для каждого показывает 1, как, например, в результате такого запроса:

Код: Выделить всё

select
  employee.lastName,
  employee.firstname,
  orders.paymentmethod,
  count(orders.paymentmethod),
  count(distinct orders.paymentmethod)
from employee, orders
  where (orders.empNo = employee.empno)
    group by employee.lastName, employee.firstname, orders.paymentmethod
Вопрос: а как сделать чтоб в одной таблице показывало и количество заказов по каждому типу оплаты и количество уникальных типов оплаты для каждого сотрудника?

Вернуться к началу