Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2012, 11:29   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дык попробуй угадай, что дата-время в символьном виде записана Если структуру нельзя изменить, то можно попробовать преобразовать это поле в формат даты-времени и применить #8. Есть наверно такая функция в sqlite
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 24.09.2012 в 11:38.
Аватар вне форума Ответить с цитированием
Старый 24.09.2012, 19:27   #12
NaumOff
Пользователь
 
Регистрация: 25.07.2011
Сообщений: 48
По умолчанию

Serge_Bliznykov, Аватар,
Друзья, спасибо вам большое. Неделю бы думал без вашей помощи) Подправил ваши запросы, вот что получилось.
Сортировка по годам:
Код:
  SELECT U.Year1,
       SUM( U.InTotal ),
       SUM( U.OutTotal )
  FROM  ( 
    SELECT strftime( '%Y', Start ) AS Year1,
           InTotal,
           OutTotal
      FROM Stata
     WHERE strftime( '%Y', Start ) = Year1 
) 
AS U
 GROUP BY U.Year1
 ORDER BY U.Year1;
Сортировка по месяцам:
Код:
  SELECT U.Month1,
       SUM( U.InTotal ),
       SUM( U.OutTotal )
  FROM  ( 
    SELECT strftime( '%m.%Y', Start ) AS Month1,
           strftime( '%Y', Start ) AS Year1,
           InTotal,
           OutTotal
      FROM Stata
     WHERE strftime( '%m.%Y', Start ) = Month1 
) 
AS U
 GROUP BY U.Month1
 ORDER BY U.Year1;
Сортировка по дням:
Код:
 SELECT U.Day1,
       SUM( U.InTotal ),
       SUM( U.OutTotal )
  FROM  ( 
    SELECT strftime( '%d.%m.%Y', Start ) AS Day1,
           strftime( '%Y', Start ) AS Year1,
           strftime( '%m.%Y', Start ) AS Month1,
           InTotal,
           OutTotal
      FROM Stata
     WHERE strftime( '%d.%m.%Y', Start ) = Day1 
) 
AS U
 GROUP BY U.Day1
 ORDER BY U.Year1,U.Month1,U.Day1;
Почитал www.sqlite.org. В SQLLite нет полей типа DateTime. Да там вообще из типов только null, число, строка или blob). Дата хранится или в виде строки в буржуйском формате ISO8601 "YYYY-MM-DD HH:MM:SS.SSS", или в Real в случае юлианского календаря, или в Integer при Unix Time. В общем первый вариант наш выбор. В моем случае как я и предполагал проблема именно в формате хранения даты. Эт я поправил.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Это очень "криво". Поэтому мы наперебой с Аватар'ом и пытаемся Вам объяснить, как 365 запросов (или 12 - если помесячно) можно заменить одним запросом с группировкой по нужному элементу.
Дык я ведь и не спорил. Было очевидно, что мой мой способ плох, и число 365 я привел, чтоб это подчеркнуть.
В общем велик и могуч SQL).
NaumOff вне форума Ответить с цитированием
Старый 25.09.2012, 09:13   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Друзья, спасибо вам большое. Неделю бы думал без вашей помощи) Подправил ваши запросы, вот что получилось.
Не за что. Молодец. Поздравляю!


Цитата:
В общем велик и могуч SQL)
Воистину так!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему такой код возможен и сколько выделится памяти? Gtx541 Общие вопросы C/C++ 5 16.06.2010 19:38
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Как делается такой запрос\форма kakawkin Microsoft Office Access 1 22.04.2010 20:07
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Возможен такой скрипт ??? sasha14486 PHP 4 15.06.2009 10:58