:: Visual Foxpro, Foxpro for DOS
Помогите с запросом
Wendigo
Автор

Сообщений: 6
Дата регистрации: 13.01.2017
Помогите с запросом, пожалуйста. Есть таблица pribors с полями snamckp-наименование ЦКП, prname-название прибора, country-страна изготовления прибора, yeardoc-год предоставления информации. Нужно изучить изменение по годам информации доли числа приборов, выпущенных в России, по отношению к общему числу приборов в составе ЦКП. Результирующая таблица должна быть с 2умя полями: год предоставления информации, доля российских приборов.



Исправлено 1 раз(а). Последнее : Wendigo, 13.01.17 06:56
Ratings: 0 negative/0 positive
Re: Помогите с запросом
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
А в чем возникла сложность? В какой части запроса?
Ratings: 0 negative/0 positive
Re: Помогите с запросом
Wendigo
Автор

Сообщений: 6
Дата регистрации: 13.01.2017
Не понимаю как взять одно ЦКП и посчитать колво штук для России и колво для остальных стран
Ratings: 0 negative/0 positive
Re: Помогите с запросом
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Для одного ЦКП - WHERE snamckp="наименование ЦКП"
посчитать колво штук для России и др. стран - SELECT COUNT(*), country ... GROUP BY country
Ratings: 0 negative/0 positive
Re: Помогите с запросом
Wendigo
Автор

Сообщений: 6
Дата регистрации: 13.01.2017
of63
Для одного ЦКП - WHERE snamckp="наименование ЦКП"
посчитать колво штук для России и др. стран - SELECT COUNT(*), country ... GROUP BY country
Запрос с where не удобен, т.к их очень много
Ratings: 0 negative/0 positive
Re: Помогите с запросом
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Ты просил для одного ЦКП.
Ну, сгруппируй также по snamckp: GROUP BY country, snamckp
Ratings: 0 negative/0 positive
Re: Помогите с запросом
Wendigo
Автор

Сообщений: 6
Дата регистрации: 13.01.2017
Использую данный запрос SELECT COUNT(*),snamckp ,yeardoc FROM pribors WHERE country="Россия" GROUP BY country, snamckp, yeardoc ORDER BY yeardoc, snamckp INTO CURSOR cgr1, выводит все записи по России, можно как-то добавить еще 1 столбец в этот курсор, где в столбце cnt будет общее число то бишь если бы запрос был без условия WHERE country="Россия"



Исправлено 1 раз(а). Последнее : Wendigo, 13.01.17 10:42
Ratings: 0 negative/0 positive
Re: Помогите с запросом
Wendigo
Автор

Сообщений: 6
Дата регистрации: 13.01.2017
Как можно вставить столбец из одной таблицы в другую?
Ratings: 0 negative/0 positive
Re: Помогите с запросом
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
SELECT-ом из 2х таблиц. Или ALTER-ом добавить столбец, и наполнить в SCANе
Ratings: 0 negative/0 positive
Re: Помогите с запросом
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Ещё существует оператор объединения множеств значений JOIN с вариантами.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Помогите с запросом
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
select sum (iif(country=="Россия", 1, 0)) из_россии, ;
sum (iif(country=="Россия", 0, 1)) не_из_россии, year ;
FROM your_table GROUP BY year

Если вдруг в поле country попадутся null-ы, то такие приборы посчитаются как импортные.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Помогите с запросом
Wendigo
Автор

Сообщений: 6
Дата регистрации: 13.01.2017
Если у меня после этого запроса SELECT COUNT(*),snamckp ,yeardoc FROM pribors WHERE country="Россия" GROUP BY country, snamckp, yeardoc ORDER BY snamckp INTO CURSOR cgr1
есть ЦКП с одинаковым наименованием и годом, как мне просуммировать их колво?
Ratings: 0 negative/0 positive
Re: Помогите с запросом
sphinx

Сообщений: 31189
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
CREATE CURSOR pribors (snamckp C(30), yeardoc N, country C(20) )
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 1', 2000, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 2', 2010, 'США')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 1', 2008, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 2', 2008, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 1', 2008, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 3', 2010, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 2', 2008, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 3', 2008, 'Индия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 1', 2010, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 2', 2008, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 2', 2010, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 3', 2011, 'Россия')
INSERT INTO pribors (snamckp, yeardoc, country) VALUES ('Прибор 3', 2012, 'Россия')
SELECT snamckp, yeardoc, COUNT(*) cnt ;
FROM pribors ;
WHERE country="Россия" ;
GROUP BY snamckp, yeardoc ;
ORDER BY snamckp, yeardoc ;
INTO CURSOR cgr1
SELECT cgr1
BROWSE


------------------
"Veni, vidi, vici!"(с)




Исправлено 1 раз(а). Последнее : sphinx, 23.01.17 19:28
Ratings: 0 negative/0 positive
Re: Помогите с запросом
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
Для ТС: вы почитайте малость (ну реально это не много и не долго) по SELECT-SQL - поэксперемнтируйте прям в среде фокса с запросиками простенькими - и все сразу станет на свои места )))

Конкретно по группировке, ну логически размышляйте - ежели вы производите группироку по какому-либо полю - то что вы хотите увидеть в остальных полях? логично же там что-то агрегатное получать - сумму, среденее, кол-во, мин-макс ... этого в большинстве случаев оказывается достаточно (опускаем специальные агрегаты типа персентилей и прочей статистики - один фиг ее нету встроенной в фоксе)

Еще такая подсказка - не путайте count(поле) и count(distinct поле) ... правда фокс count(distinct ) более чем по одному полю не позволяет.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика