|
|
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
изучаю Грабера... (отучаюсь от конструктора запросов) есть табличка с полями SNUM и AMT (номер продавца и количество проданного за день) нужно найти продавца который имеет максимальные продажи делаю так: SELECT Top 1 Orders.SNUM, Sum(Orders.AMT) FROM Orders GROUP BY Orders.SNUM ORDER BY Sum(Orders.AMT) DESC; Вопрос как написать лучше или это нормальный метод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:10 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
select max([FieldName]) as [Alias] from [TableName] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:43 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
вот ещё вопросик как найти количество продавцов? по граберу делается так: SELECT count (distinct SNUM) FROM Orders в аксессе такое не прокатывает, так же как SELECT count (*) FROM Orders ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:43 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Hummer я не понял тебя. мне нужно найти сумму проданного каждым продавцом и взять максимальное значение одним запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:48 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
кол-во продавцов примерно так. SELECT count(snum) AS Выражение1 FROM (select distinct snum from orders) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:59 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 vlad_707 Я написал просто через макс - соответсвенно вместо TableName может быть подзапрос с суммой продаж по продавцам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:59 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
А без подзапросов никак ??? у Грабера делается одним П.С. по Граберу до подзапросов я ещё не дошёл с подзапросами понятно.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 13:08 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Максимум могут иметь несколько продавцов. Поэтому лучше так: SELECT * FROM ( SELECT Orders.SNUM ID_ord, Sum(Orders.AMT) SUM_amt FROM Orders GROUP BY Orders.SNUM ) x WHERE SUM_amt >= ALL (SELECT Sum(Orders.AMT) FROM Orders GROUP BY Orders.SNUM) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 13:14 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
ЗЫ. Потренироваться в написании запросов можно здесь: http://sql.ipps.ru или сразу http://sql.ipps.ru/exercises.php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 14:21 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
-)) спасибо.., если б за это ещё з.п. платили-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 15:01 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Ба! Какие люди нас посетили! :) 2 Serge I - пламенный привет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 18:09 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
To VIG Так вот вы где пропадаете. А я все жду писем.:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 18:21 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Ну "пропадаете" это громко сказано, так , заглядываю иногда на огонек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 19:50 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
продолжаю изучение Мартина Грабера. появился новый вопрос: Тема СВЯЗАННЫЕ ПОДЗАПРОСЫ из теории: вот способ найти всех заказчиков в Заказах на 3-е октября : SELECT * FROM Customers outer WHERE 10/03/1990 IN (SELECT odate FROM Orders inner WHERE outer.cnum = inner.cnum); Я проверяю... запрос пишет ошибки на алиасах...-(.... хм... меняю имена алиасов на "a" , "b" запрос выводится пустым.... хотя должен выводить 4 записи Вопрос чё не так в аксессе ????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 11:38 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
inner - зарезервированное слово!!! 10/03/1990 - это не дата - это 10 деленное на 3 и деленное на 1990 А дата пишется так: #10/03/1990# И не всех на 3 октября, а всех на 3 октября 1990 года ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 11:47 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
хм..... в книге указано, как я писал исходно... ранее пробовал такой запрос,тоже думал,что не понимает как дату... SELECT * FROM Customers AS a WHERE #10/03/1990# IN (SELECT odate FROM Orders b WHERE a.cnum = b.cnum); выводит пустые строки.... такой запрос соответственно работает SELECT DISTINCT Customers.*, Orders.ODATE FROM Customers INNER JOIN Orders ON Customers.CNUM = Orders.CNUM WHERE (((Orders.ODATE)=#3/10/1990#)); Что не так во связанном ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:11 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
#10/03/1990# - 3 октября (3 октября Гендальф дрался с назгулами на Заверети :) ) #03/10/1990# - 10 марта что-то не так с данными, может их вбили не совсем корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:18 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
тогда я что то не понимаю.... данные таблицы ODATE 10.03.1990 10.04.1990 10.03.1990 10.04.1990 10.06.1990 10.05.1990 10.06.1990 10.03.1990 10.03.1990 10.03.1990 переправил запрос на SELECT * FROM Customers AS a WHERE #03/10/1990# IN (SELECT odate FROM Orders b WHERE a.cnum = b.cnum); хм... и он заработал...... причём, когда в конструкторе запросов на условие пишешь 10.03.1990 в SQL строке аксесс записывает #03/10/1990#.... и выдаёт нужный результат..... это что, подстава?????????????????????????????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:44 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
авторпричём, когда в конструкторе запросов на условие пишешь 10.03.1990 в SQL строке аксесс записывает #03/10/1990#.... и выдаёт нужный результат..... это что, подстава?????????????????????????????????? нет - это так и есть 10.03.1990 - это 10 марта 1990 года (в русском представлении даты) 03/10/1990 - то же число только по американски Мы пишем дату в формате dd.mm.yyyy, а америкосы mm/dd/yyyy А акс как известно америкосами писан :) В конструкторе вы дату пишете в вашей локали, а система ее сама приводит к типу понятному Аксу, а ему как раз понятен американский формат даты Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:49 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
автор в другом топике писал:Господа модераторы. Может мой топик "запрос-найти максимального из группы" переименовать в "Грабли Мартина в аксессе". я туда скидываю все вопросы,которые не получаются выполнить в аксессе по этой книге. Мартин Грабер "Введение в SQL". Переименовываю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:55 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 paparone Не америкосы , а американцы. (Тут ,слава богу ,не ПТ а профессиональный форум). А в остальном все правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 14:37 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 VIG Ок - учту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 15:59 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Такого примера я не нашёл в Грабере (может я пока слеп) есть таблица T a__b__c 1__1__0 1__2__0 2__3__0 2__4__0 3__5__0 нужно найти сумму b по групперовке а и записать её в каждой записи поля с для соответствующих а....????????????????????? какие будут предложения. П.С. есть рабочий вариант для sql сервера, но в аксессе он не работает (т.е должен получиться столбец с с 3 3 7 7 5 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 17:27 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Что-то подобное несколько раз пробегало Есть такое в Аксе - он не может упдейтить таблицу т.к. запрос делается из самой таблицы с группировкой () Выход - заносить результат во временную таблицу и только потом Update поля c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 17:33 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
на SQL сервере сделали такой запрос и он работает UPDATE t1 SET c = (SELECT SUM(t2.b) FROM t AS t2 WHERE t1.a = t2.a GROUP BY t2.a) FROM t AS t1 Грабер пишет такое: Сам подзапрос не должен использовать предложения GROUP BY или HAVING. Делаю так: (что не работает- пишет,что запрос должен быть обновлённым) делаю первый сохран запрос z1 SELECT t.a, Sum(t.b) AS sb FROM t GROUP BY t.a; и конечный запрос UPDATE t SET c = (SELECT z1.sb FROM z1 WHERE z1.a = t.a); Что тут нужно ещё подшаманить?? и как бы всётаки записать одним запросом или как-нибудь вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 17:58 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32517644&tid=1674519]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 519ms |

| 0 / 0 |
