Запрос

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
FromTanC
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 10.03.2006 (Пт) 10:12

Запрос

Сообщение FromTanC » 04.04.2006 (Вт) 13:19

БД: ACCESS
есть табличка менеджеры
поля:
Менеджер
Клиент
Сумма

Надо по каждому менеджеру информацию
об отношении числа всех его клиентов к числу клиентов, у которых заказ более 1000 р.

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

Select Менеджер, count(Клиенты) from table
group by менеджер


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

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.04.2006 (Вт) 13:25

Код: Выделить всё
Having Сумма>1000

:?:

FromTanC
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 10.03.2006 (Пт) 10:12

Сообщение FromTanC » 04.04.2006 (Вт) 13:27

тогда я получу клиентов, у которых сумма больше 1000, а мне надо одновременно всех, и тех у которых больше 1000 чтобы найти их отношение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.04.2006 (Вт) 13:28

Два запроса.
Lasciate ogni speranza, voi ch'entrate.

FromTanC
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 10.03.2006 (Пт) 10:12

Сообщение FromTanC » 04.04.2006 (Вт) 13:32

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

SELECT Менеджер, count(Клиенты) FROM TABLE
GROUP BY менеджер


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

SELECT Менеджер, count(Клиенты) FROM TABLE
GROUP BY менеджер Having Заказ>1000


так а дальше как?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.04.2006 (Вт) 13:35

Код: Выделить всё
SELECT
A.Менеджер,
A.TotalCount/B.Count1000
FROM
(SELECT Менеджер, count(Клиенты) as TotalCount FROM TABLE
GROUP BY Менеджер) A INNER JOIN
(SELECT Менеджер, count(Клиенты) as Count1000 FROM TABLE
GROUP BY Менеджер
HAVING Сумма>1000) B ON A.Менеджер=B.Менеджер



но будут не все менеджеры, надо бы еще условие на вычисление и LEFT JOIN, наверное

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.04.2006 (Вт) 13:40

Почему HAVING?
WHERE.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.04.2006 (Вт) 13:47

да , наверное WHERE - точно, это я погорячился :cry:

FromTanC
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 10.03.2006 (Пт) 10:12

Сообщение FromTanC » 04.04.2006 (Вт) 13:47

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

SELECT A.Менеджер, A.TotalCount/B.Count1000
FROM [SELECT Менеджер, count(Клиент) AS TotalCount FROM Данные
GROUP BY Менеджер]. AS A INNER JOIN [SELECT Менеджер, count(Клиент) AS Count1000 FROM Данные Where  Сумма>1000
GROUP BY Менеджер
]. AS B ON A.Менеджер=B.Менеджер;


вот так?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.04.2006 (Вт) 13:49

Код: Выделить всё
SELECT
  A.Менеджер,
  A.TotalCount/B.Count1000
FROM
(SELECT Менеджер, count(Клиент) AS TotalCount FROM Данные
GROUP BY Менеджер) AS A
   INNER JOIN
(SELECT Менеджер, count(Клиент) AS Count1000 FROM Данные WHERE  Сумма>1000
GROUP BY Менеджер
) AS B
   ON A.Менеджер=B.Менеджер


скорее уж так

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.04.2006 (Вт) 13:51

а еще лучше - выложи свою mdb с этой одной табличкой и нарисуй примерный результат с данными, который ты хочешь получить


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList