Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подсчет данных (Помогите пожалуйста) / 14 сообщений из 14, страница 1 из 1
24.01.2013, 10:53
    #38122790
qdesnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
Помогите кто чем может ^_^

есть база данных dBf, где чем и сколько заправились водители
например

Город - Вид топлива - Количество (лит) - Сумма(р)
Москва 92 30 900
Москва 95 30 1000
С-Пб 98 40 1400
С-Пб 95 40 1300
С-Пб 95 40 1300
Омск Дт 20 600
Омск 98 40 1560


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

примерно так это будет выглядить
Москва
******
92 - 30 (лит) 900 (руб)
95 - 30 (лит) 900 (руб)

СпБ
******
92 - 0 (лит) 0 (руб)
95 - 80 (лит) 2600 (руб)
98 - 40 (лит) 1400 (руб)


ЗАРАНЕЕ БЛАГОДАРЮ!
...
Рейтинг: 0 / 0
24.01.2013, 11:08
    #38122828
Подсчет данных (Помогите пожалуйста)
qdesnik,
Примерно так. Пользуйся. Только разберись сначала что к чему....
Код: sql
1.
2.
3.
4.
select город, вид топлива, sum(количество литров) as litr , sum(Сумма руб) as rubley ;
from таблица
group by 1, 2 
order by 1, 2



Только строку
qdesnikСпБ
******
92 - 0 (лит) 0 (руб)

не выведет.
Если вам нужна еще и эта строка, то надо иметь табличку с видами топлива, которые существуют в каждом городе, и соединять ее с Вашей исходной таблицей...
...
Рейтинг: 0 / 0
24.01.2013, 13:32
    #38123087
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
qdesnikПомогите кто чем может ^_^

есть база данных dBf, где чем и сколько заправились водители
например

Город - Вид топлива - Количество (лит) - Сумма(р)
Москва 92 30 900
Москва 95 30 1000
С-Пб 98 40 1400
С-Пб 95 40 1300
С-Пб 95 40 1300
Омск Дт 20 600
Омск 98 40 1560


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

примерно так это будет выглядить
Москва
******
92 - 30 (лит) 900 (руб)
95 - 30 (лит) 900 (руб)

СпБ
******
92 - 0 (лит) 0 (руб)
95 - 80 (лит) 2600 (руб)
98 - 40 (лит) 1400 (руб)


ЗАРАНЕЕ БЛАГОДАРЮ!

Типа такого:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE CURSOR test (Город c(10), Видтоплива c(10), Количество y, Сумма y) 

INSERT INTO test VALUES ('Москва', '92', 30, 900)
INSERT INTO test VALUES ('Москва', '95',  30, 1000)
INSERT INTO test VALUES ('С-Пб', '98',  40, 1400)
INSERT INTO test VALUES ('С-Пб', '95',  40, 1300)
INSERT INTO test VALUES ('С-Пб', '95',  40, 1300)
INSERT INTO test VALUES ('Омск', 'Дт',  20, 600)
INSERT INTO test VALUES ('Омск', '98',  40, 1560)


SELECT b.город, b.видтоплива, NVL(SUM(a.Количество),0.000) Количество, NVL(SUM(a.Сумма),0.00) Сумма from;
(SELECT distinct t.видтоплива, t1.город FROM test t ;
FULL OUTER  JOIN ;
test t1 ON 1=1) b ;
LEFT JOIN test a ON b.видтоплива = a.видтоплива AND b.город = a.город;
 GROUP BY b.город , b.видтоплива
...
Рейтинг: 0 / 0
24.01.2013, 13:51
    #38123137
qdesnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
Станислав С...кий,
Спасибо большое, завтра все опробую и отпишу
...
Рейтинг: 0 / 0
24.01.2013, 14:04
    #38123164
qdesnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
PaulWist,

завтра скину базу саму, видно будет, сходится ли все
Спасибо!
...
Рейтинг: 0 / 0
25.01.2013, 03:41
    #38124064
qdesnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
Станислав С...кий,

Станислав С...кийqdesnik,
Примерно так. Пользуйся. Только разберись сначала что к чему....
Код: sql
1.
2.
3.
4.
select город, вид топлива, sum(количество литров) as litr , sum(Сумма руб) as rubley ;
from таблица
group by 1, 2 
order by 1, 2



Только строку
qdesnikСпБ
******
92 - 0 (лит) 0 (руб)

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

Все считает, но город выдает самый первый и к нему плюсует все суммы. Прикрепляю конкретную таблицу.
По поводу нулевых значений, не обязательны они, но если что есть файл с видом топлива
d_fuel.dbf
(codfuel - name) соответсвие с tranzit.dbf
и всеми городами
city.dbf
(number_city - name_city)
...
Рейтинг: 0 / 0
25.01.2013, 03:43
    #38124065
qdesnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
PaulWistqdesnikПомогите кто чем может ^_^

есть база данных dBf, где чем и сколько заправились водители
например

Город - Вид топлива - Количество (лит) - Сумма(р)
Москва 92 30 900
Москва 95 30 1000
С-Пб 98 40 1400
С-Пб 95 40 1300
С-Пб 95 40 1300
Омск Дт 20 600
Омск 98 40 1560


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

примерно так это будет выглядить
Москва
******
92 - 30 (лит) 900 (руб)
95 - 30 (лит) 900 (руб)

СпБ
******
92 - 0 (лит) 0 (руб)
95 - 80 (лит) 2600 (руб)
98 - 40 (лит) 1400 (руб)


ЗАРАНЕЕ БЛАГОДАРЮ!

Типа такого:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE CURSOR test (Город c(10), Видтоплива c(10), Количество y, Сумма y) 

INSERT INTO test VALUES ('Москва', '92', 30, 900)
INSERT INTO test VALUES ('Москва', '95',  30, 1000)
INSERT INTO test VALUES ('С-Пб', '98',  40, 1400)
INSERT INTO test VALUES ('С-Пб', '95',  40, 1300)
INSERT INTO test VALUES ('С-Пб', '95',  40, 1300)
INSERT INTO test VALUES ('Омск', 'Дт',  20, 600)
INSERT INTO test VALUES ('Омск', '98',  40, 1560)


SELECT b.город, b.видтоплива, NVL(SUM(a.Количество),0.000) Количество, NVL(SUM(a.Сумма),0.00) Сумма from;
(SELECT distinct t.видтоплива, t1.город FROM test t ;
FULL OUTER  JOIN ;
test t1 ON 1=1) b ;
LEFT JOIN test a ON b.видтоплива = a.видтоплива AND b.город = a.город;
 GROUP BY b.город , b.видтоплива



выдает Unrecognized рhrase/keyword in command. (36)
/в команде указана недопустимая фраза или ключевое слово/
...
Рейтинг: 0 / 0
25.01.2013, 08:37
    #38124125
Подсчет данных (Помогите пожалуйста)
qdesnikСтанислав С...кий,

...пропущено...
Все считает, но город выдает самый первый и к нему плюсует все суммы.

Проверил на переданной таблице. Все нормально работает.
Ах, да... я же там пару "точек с запятой" (после второй и третьей строки) не поставил... Мой VFP8 выругался, что "group by должен присутствовать в Select'e"... А FPD мог и пропустить...
Ну так я не зря же сказал про то, что надо сначала понять, что запрос делает....
...
Рейтинг: 0 / 0
25.01.2013, 08:49
    #38124135
qdesnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
Станислав С...кийqdesnikСтанислав С...кий,

...пропущено...
Все считает, но город выдает самый первый и к нему плюсует все суммы.

Проверил на переданной таблице. Все нормально работает.
Ах, да... я же там пару "точек с запятой" (после второй и третьей строки) не поставил... Мой VFP8 выругался, что "group by должен присутствовать в Select'e"... А FPD мог и пропустить...
Ну так я не зря же сказал про то, что надо сначала понять, что запрос делает....

можешь исправить мою учитывая таблицу?
...
Рейтинг: 0 / 0
25.01.2013, 08:59
    #38124147
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
qdesnikвыдает Unrecognized рhrase/keyword in command. (36)
/в команде указана недопустимая фраза или ключевое слово/

Дык, версия фокса какая ?
...
Рейтинг: 0 / 0
25.01.2013, 09:08
    #38124157
qdesnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
PaulWist,

неправильно вбил order by =) лишний символ был
все считает вроде правильно и выводит как надо, спасибо
еще бы в литрах точку поставить, а то эти тысячные сбивают, подсоби)
...
Рейтинг: 0 / 0
25.01.2013, 09:08
    #38124158
Подсчет данных (Помогите пожалуйста)
qdesnik,
Ох, лентяй...
Вот держи... Все работает....
Код: sql
1.
2.
3.
4.
select name_city, name, sum(amount) as litr , sum(pay) as rubley ;
from tranzit ;
group by 1, 2 ;
order by 1, 2


name_citynamelitrrubley"Белогорск""А-95"1300003683.55"Белогорск""АИ-93"1150003047.50"Биробиджан""А-76"88210018981.73"Биробиджан""А-95"7340020204534.13"Биробиджан""АИ-93"12774580337761.39"Биробиджан""ДИЗ.ТОПЛИВО"532110901568334.65"Благовещенск""А-76"158300036139.30"Благовещенск""А-95"258000066248.20"Благовещенск""АИ-93"152467038963.09"Благовещенск""ДИЗ.ТОПЛИВО"12801000314591.95"Ивановка""АИ-93"450001305.00"Свободный""А-95"181000046065.70"Свободный""АИ-93"1450003592.50"Свободный""ДИЗ.ТОПЛИВО"253000063439.70"Шимановск""А-95"700002120.30
...
Рейтинг: 0 / 0
25.01.2013, 09:13
    #38124162
Подсчет данных (Помогите пожалуйста)
qdesnikPaulWist,

неправильно вбил order by =) лишний символ был
все считает вроде правильно и выводит как надо, спасибо
еще бы в литрах точку поставить, а то эти тысячные сбивают, подсоби)
Эй, уважаемый... А думать-то кто будет, а?
Последний раз помогаю...
Код: sql
1.
2.
3.
4.
select name_city, name, sum(amount/1000) as litr , sum(pay) as rubley ;
from tranzit ;
group by 1, 2 ;
order by 1, 2
...
Рейтинг: 0 / 0
25.01.2013, 09:18
    #38124165
qdesnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет данных (Помогите пожалуйста)
Станислав С...кий,
Всеобъемлющая лень ага, после праздников. =)
Большое спасибо, принцип понял. Теперь и только с хелпом можно работать
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подсчет данных (Помогите пожалуйста) / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]