Quantcast
Channel: Комментарии: Всемогущая функция Query — подробное руководство
Viewing all 41 articles
Browse latest View live

Автор: Johnny Saph

$
0
0

Скажите, пожалуйста, можно ли сделать сортировку по 2ум полям?
select* order by G, order by C выдает ошибку
(select* order by G) order by C также выдает ошибку


Автор: Алексей Селезнёв

$
0
0

Добрый день, можно. Делается так же, как и в обычном классическом SQL, т.е.

select* order by G, C

Предикат order by не надо объявлять повторно, просто перечислите поля по которым необходимо отсортировать массив.

Автор: Johnny Saph

Автор: Алексей Селезнёв

$
0
0

Судя по скрину данные отображаются, т.е. ошибки нет, и надо поставить пробел между select и *.

Автор: Luno Lunomania

$
0
0

Здравствуйте. Большое спасибо за описание столь полезного оператора. Пытаюсь воспользоваться им, но все время сумма выводимых данных — 0, хотя это не так. Может быть поможете разобраться? Суть проблемы: есть таблица на одном листе «Расходы», содержащая 3 колонки: дата, сумма и наименование расхода (типа Еда, Развлечения, Коммунальные услуги..). Задача: выводить на другом листе (Траты по месяцам) траты в сумме по месяцам (колонка — месяц/год и название расхода, строка — суммы на год и месяц) на каждый из типов расходов. Казалось бы, просто. Sumif в других местах работает хорошо, и здесь бы сработала, если бы у нас было одно условие, например, суммировать вообще все траты на Еду. Но нам надо по месяцам и годам. Пробовала использовать dsum. Но он не позволяет (ну как я поняла) логически работать с областью поиска, то есть, в данном случае, складывает вообще все, что найдет, хоть по одному параметру подходящее, хоть по двум, хоть по всем. Решила пойти путем query. Сделала еще дополнительные листы: 2016, 2015, 2014.., где вывела с помощью query все траты по всем направлениям, но за какой то один год, то есть на этом новом листе отличаются только месяца, и все в единственном экземпляре: =query(‘Расходы’!$A2:$P; «select C where (A=’Еда’)and(O=2016)»;1) Все выводится правильно, и вроде бы задача решена, потому дальше остается воспользоваться только функцией sumif и в табличке «Траты по месяцам» и просто прописать жестко формулу для каждого месяца и года в соответствии с листами. Но (!!!) почему то sumif не может сложить то, что выводит query… просто не воспринимает как число, хотя я уже везде указала формат этих ячеек и исходные данные точно чИсла, и конечная ячейка число… а все равно в сумме 0, хотя я точно знаю что не 0… Где еще можно насильно указать формат, чтобы выводимые query данные, можно было использовать как числа? чем собственно они и являются. Или, возможно, есть какой то более простой способ сделать сводку по тратам… Или может быть есть способ суммировать сразу в query… по всем параметрам без промежуточных листов и таблиц. Заранее благодарю за ответ, очень жду.

Автор: Алексей Селезнёв

$
0
0

Добрый день, есть много довольно простых и удобных способов решения вашей задачи. На счёт QUERY мне было бы проще вам помочь если бы вы к примеру сделали копию вашего докса хотя бы с частью данных, я бы посмотрел в чём дело и более точно смог описать решение.

На самом деле всё можно суммировать и внутри функции QUERY, используя SUM.

По поводу функции SUMIF, есть её аналог который предназначен именно для суммирования по множеству условий, функция SUMIFS.

Но в вашем случае думаю наиболее быстрым, удобным и простым решением будет сводная таблица, подробный мануал о работе в сводных таблицах вы можете найти тут http://blog.netpeak.ua/kak-postroit-svodnie-tablitsy-v-excel-libreoffice-openoffice-i-tablitsah-google/

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

Автор: Luno Lunomania

$
0
0

Спасибо за ответ! Почему то некоторые ячейки так и остались текстом и не суммировались, но я их нашла, удалила и все исправилось. А таблицу сделала потом вообще без query, на одном SUMIFS.

Автор: Алексей Селезнёв

$
0
0

Замечательно, если будут ещё вопросы с радостью на них отвечу.


Автор: Timur

$
0
0

Попробуйте так:
SELECT A
WHERE A START WITH 4

Автор: Алексей Селезнёв

$
0
0

Отличная подсказка, спасибо. Добавлю описание всех дополнительных операторов которые поддерживает WHERE.

Автор: Johnny Saph

$
0
0

Данные отображаются, но по столбцу C не отсортированы

Автор: Анастасия

$
0
0

Добрый день. Спасибо большое за статью, очень полезно. Могли бы Вы, пожалуйста, помочь. Мне нужно прописать в функции, чтобы она выводила/вытягивала с другой страницы только те айди, которые не указаны выше. Как это выглядит:
=QUERY(AUTO!A2:J4001;»
Select A, B
WHERE
(B = ‘Текст 1′)
AND
A ‘Текст 1’!A3:A84′»)
Как видно, у меня есть 2 листа — AUTO и Текст 1. В колонке А на листе Текст 1 уже есть какие-то айди, которые не нужно трогать. А формула должна с листа AUTO на лист Текст 1 вытянуть уникальные не повторяющиеся значения айди.
Основная проблема возникает в нескольких моментах. 1 — вот здесь A ‘Текст 1’!A3:A84 функция не воспринимает диапазон’Текст 1’!A3:A84 как лист, мне кажется. 2 — я не уверена, что правильно прописываю последнюю часть по поводу не включающихся значений.
Буду очень благодарна за помощь!

Автор: Алексей Селезнёв

$
0
0

Добрый день, если не ошибаюсь вам сначала надо пометить ID которых нет в списке на листе «Текст 1″, далее вывести просто список этих уникальных ID.

Если выше я написал всё верно, то изначально с помощью функции VLOOKUP отметьте те которые есть в списке на листе «Текст1″, далее в условии WHERE просто фильтруйте данные по этому столбцу, для того что бы получить список уникальных значение используйте блок GROUP BY.

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

Автор: Анастасия

Автор: Алексей Селезнёв


Автор: Анастасия

Автор: Алексей Селезнёв

$
0
0

Готово!

Смотрите, на лист AUTO я добавил 1 столбец, который проверяет наличие каждого ID в справочнике исключений который находится на листе Текст 1 и возвращает FALSE если данного ID нет в справочнике и TRUE в случае если находит ID в справочнике исключений.

Далее на листе Текст 2 в запросе я внёс изменения в блок WHERE, добавив условие
AND C = ‘FALSE’.

Теперь на лист Текст 2 выводятся строки только с теми ID которых нет на листе Текст 1.

Автор: AZ

$
0
0

Алексей, спасибо, что отвечаете на все вопросы и стараетесь всем помочь.
У меня еще вопрос: пытаюсь вытянуть через query данные из столбца N (числовые), которые равняются числу в ячейке M2: select Col3 where Col3 = ‘»&M2&»‘. Выдает #Н/Д, хотя в Col3 точно есть значение равное M2, и даже не одно. Если меняю = на contains или прописываю вместо М2 число (select Col3 where Col3 = 65862) все работает. И при том проблема такая только с числами, если сравниваю текст тоже все работает. Подскажите, пожалуйста, в чем проблема и как мне ее решить?

Автор: Алексей Селезнёв

$
0
0

Здравствуйте)
При работе с числами не надо ставить апостроф, т.к. вы конвертируете таким образом число в текст.

Вы пишите: Col3 = ‘»&M2&»‘
А надо писать: Col3 = «&M2&»

Автор: AZ

$
0
0

Алексей, СПАСИБООО!!!!!!

Viewing all 41 articles
Browse latest View live