Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> составной запрос, sum 
V
    Опции темы
Diksa
Дата 15.9.2014, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 21.10.2008

Репутация: нет
Всего: нет



Ребят подскажите возможно ли сделать такой запрос?

таблица в базе:
Код

id   |  idFlight  |  idWorks |     workedTime |  date
---------------------------------------------------------
1    |     25      | 1            |         60          | 2014-08-01
2    |     25      | 2            |         80          | 2014-08-01
3    |     45      | 1            |         55          | 2014-08-02
4    |     45      | 2            |         70          | 2014-08-02
5    |     25      | 1            |         40          | 2014-08-03




необходимо вывести сумму workedTime по числам, что-то на подобие этого

Код


id   |  idFlight  | workedTime |  date
---------------------------------------------------------
1    |     25      |         140     | 2014-08-01
3    |     45      |         125     | 2014-08-02
5    |     25      |         40       | 2014-08-03




 
PM MAIL   Вверх
Akina
Дата 15.9.2014, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



RTFM "GROUP BY" & "SUM()"


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Diksa
Дата 15.9.2014, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 21.10.2008

Репутация: нет
Всего: нет



Эсли я правильно понял запрос должен иметь след. вид 

Код

select date, sum(workedTime), idflight from Karta  Group by (idFlight);


но результат получается не такой как мне надо :(

Код

id   |  idFlight  | workedTime |  date
---------------------------------------------------------
1    |     25      |         180     | 2014-08-01
3    |     45      |         125     | 2014-08-02


PM MAIL   Вверх
Akina
Дата 15.9.2014, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



1) Неправильно понял.
2) Неправда - ты показываешь результат совсем другого запроса.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Diksa
Дата 16.9.2014, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 21.10.2008

Репутация: нет
Всего: нет



результат выполнения запроса:

Код

select date, sum(workedTime), idflight from Karta  Group by (idFlight);


http://itmages.ru/image/view/1919181/acf2b5b5

видно что idFlight = 2 выводит за 2014-07-02 

а если посмотреть на данные то видно что есть и на 2014-07-03 и на 2014-07-04

http://itmages.ru/image/view/1919182/41b258b8


PS: Не могу понять зачем Вы тратите свое время, всеравно исходя из Вашего последнего ответа последуют следующие вопросы :(
или это так создается выдимость онлайна на этом форуме.
PM MAIL   Вверх
Akina
Дата 16.9.2014, 11:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Diksa @  16.9.2014,  11:38 Найти цитируемый пост)
Не могу понять 

Вопрос задан в тематическом разделе. Значит, автор желает не только увидеть, как, но и понять, почему именно так. Кроме того, предполагается, что он анализирует ответы и выполняет данные там рекомендации.
А те, кто приходят с желанием просто получить готовый ответ, должны обращаться не в тематические разделы, а в "Помощь студентам" или вообще во фриланс.

PS-1. Вы НЕ ЧИТАЛИ справку по GROUP BY. Либо читали её крайне невнимательно. Иначе видели бы, в чём принципиальная ошибка.
PS-2. Вы показываете запрос, выбирающий три поля, и вывод с четырьмя полями.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Diksa
Дата 16.9.2014, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 21.10.2008

Репутация: нет
Всего: нет



Спасибо за помощь!

если кому пригодится ответ то запрос выглядит след убразом 

Код

SELECT sum(k.workedTime) as WT, date
FROM Karta k
WHERE idWorks <> 10 AND k.date LIKE '2014-08%' Group by(Date)  ORDER BY k.date;

PM MAIL   Вверх
Akina
Дата 16.9.2014, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Не очень хороший вид запроса. 

1) Поскольку таблица одна, алиасы имени таблицы можно не использовать. Либо, если использовать, то абсолютно везде. Если таблиц более одной - безусловно везде, даже если текущая структура позволяет вроде бы однозначно идентифицировать таблицу-источник какого-либо поля. Такая привычка убережёт от кучи ошибок в будущем.
2) В кляузе Group By нежелательно брать список полей группировки в скобки. Это может привести к лишним неявным преобразованиям типов.
3) При отборе по дате лучше использовать не Like (поскольку при этом выполняется преобразование даты в строку), а Between. Кстати, Like не позволит серверу использовать индекс, если таковой имеется.
4) Хоть в MySQL слово date не является зарезервированным, оно вполне может попасть в список в следующих версиях - уж больно популярное. Рекомендуется давать полям менее популярные имена.
5) В MySQL группировка одновременно означает и сортировку по тому же выражению, если не указан иной порядок сортировки. Кляуза Order By - лишняя.

К тому же запрос не отвечает начальным условиям темы.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 16.9.2014, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  16.9.2014,  16:59 Найти цитируемый пост)
 запрос не отвечает начальным условиям темы. 

Мне тоже так сначала показалось, но потом я перечел:
Цитата(Diksa @  15.9.2014,  15:26 Найти цитируемый пост)
необходимо вывести сумму workedTime по числам

И решил, что если под "числами" имеетя в виду "дата", то все же - соответствует.
Не соответствует контрольному примеру результирующего набора данных  smile, но там используется ключевое слово "вроде", легализующее всяческие допущения и опущения в том числе.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 16.9.2014, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Zloxa @  16.9.2014,  18:05 Найти цитируемый пост)
но потом я перечел

Обычно примеру я верю больше, чем описанию. В примере - тем более сравнительно аккуратно отформатированном,- ошибиться намного сложнее. Кроме того, каждой дате соответствует одно лишь значение имеющегося в выходном наборе поля idFlight. Но значение этого поля варьирует, что намекает на возможное соответствие одному значению date нескольких разных значений idFlight. И тогда о какой статистике речь, вообще неясно...

Впрочем, слишком уж простая задача вызвала затруднения - создалось впечатление, что это была неудачная попытка решить проблему кавалерийским наскоком без изучения даже самых основ. Потому ТС и был послан в STFW.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Diksa
Дата 17.9.2014, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 21.10.2008

Репутация: нет
Всего: нет



БЛАГОДАРЮ за столь интересные розьяснения!

PS: Поскольку к такому способу решения задач обращаюсь крайне редко, признаю что задачу поставил не совсем корректно с некоторыми упущениями. Как-то привычнее гуглить до потери пульса, а тут решился, и собственно от этого процесса получил не весьма приятные впечатления, обидно :( 
PM MAIL   Вверх
Akina
Дата 17.9.2014, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Diksa, гуляние по граблям - это единственный способ НАДЁЖНОГО изучения предмета.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.