|
Вопрос про Select
|
|||
---|---|---|---|
#18+
Добрый день, уважаемые. Сам бьюсь над задачкой, решить не могу. Базовые книги прочитал, эксперементировал в SQLite Database Browser но так ничего и не вышло. Сдаюсь и прошу помочь База: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Инсерты я специально визуально разделил на строки, которые мне нужно суммировать. Что мне нужно получить на выходе с помощью запроса: Дожны суммироваться TV при одинаковых PRICE,BD,AK и сортировать по ID. Поле DT должно быть последнее, которое было insert DTPRICETVBDAK"2014-08-30 10:20:02"1380031380013801"2014-08-30 10:20:03"13800 5 13799 13800"2014-08-30 10:20:03" 13800 4 13800 13801"2014-08-30 10:20:04" 13801 2 13800 13801"2014-08-30 10:20:06" 13801 3 13801 13802"2014-08-30 10:20:06" 13802 1 13802 13803 С уважением ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2014, 03:37 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
mtgate, А в чем проблема заключается? Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2014, 11:34 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
mtgateDTPRICETVBDAK"2014-08-30 10:20:02"1380031380013801"2014-08-30 10:20:03"1380041380013801 А где собственно значение ID? Автоинкремент? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2014, 11:45 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
VSVLADАвтоинкремент Опс, он автоматом проставляет. Писал первое сообщение с телефона Android, в той версии немного по другому... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2014, 11:48 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
mtgate, Запрос будет выполняться в приложении или в каком окружении? Думаю проще будет написать пользовательский агрегат, который будет сравнивать отличается ли "предыдущие" значения price, bd, ak от текущих. Если отличаются - то суммировать, иначе, сбрасывать сумматор на 0, грубо говоря. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2014, 12:41 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
VSVLADmtgate, А в чем проблема заключается? Код: sql 1. 2. 3.
проблема в том, что данные одной строкой просчитываются в какой то группе, а надо чтобы показывался: реальный пример данных: dt price tvbdak13.06.2014 1:00:00 13555 1 13555 13555 13.06.2014 1:00:00 13555 1 13555 13555 13.06.2014 1:00:01 13554 3 13554 1355613.06.2014 1:00:01 13555 2 13554 1355513.06.2014 1:00:01 13554 3 13554 13555 13.06.2014 1:00:02 13555 2 13554 13555 13.06.2014 1:00:02 13555 1 13554 13555 что должно быть на выходе dt price tvbdak13.06.2014 1:00:00 13555 1 13555 13555 13.06.2014 1:00:01 13554 3 13554 1355613.06.2014 1:00:01 13555 2 13554 1355513.06.2014 1:00:01 13554 3 13554 13555 13.06.2014 1:00:02 13555 3 13554 13555 а вот что получается в реальности dt price tvbdak13.06.2014 1:00:00 13555 2 13555 13555 13.06.2014 1:00:01 13554 3 13554 1355513.06.2014 1:00:01 13554 3 13554 1355613.06.2014 1:00:00 13555 5 13554 13555 Сразу видно, что данные групируются од одинаковым price bd и ak со всего участка, а мне нужно с последовательности до первого изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2014, 15:55 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
VSVLADmtgateDTPRICETVBDAK"2014-08-30 10:20:02"1380031380013801"2014-08-30 10:20:03"1380041380013801 А где собственно значение ID? Автоинкремент? да, это Автоинкремент. собственно сортировка может быть и по DT, это не самое важное. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2014, 15:56 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
Вот еще мои размышления. Оператор Group By видимо мне не подходит, так как он группирует по всем данным. Скорее мне нужны такие действия: 1. price=bd Код: sql 1.
2. price=ak Код: sql 1.
3. объединить первые два пункта 4. отсортировать пункт 3 по dt ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2014, 18:51 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
Читал, читал... ниче не понял. Объясни что тебе нужно на других данных. Цифры меньше, разница между ними больше. Длинные поля с одной буквой разницы очень неудобны для расшифровки... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 01:03 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
постараюсь ) Исходные данные ID DTPRICETVBDAK1 "02" 100 1 100 1502 "02" 100 1 100 1503 "03" 100 1 100 1504 "11" 100 1 100 1505 "11" 125 1 125 1506 "12" 140 1 125 1407 "13" 140 1 125 1408 "13" 140 1 125 1409 "13" 100 1 100 15010"14" 100 1 100 150 должно превратиться в ID DTPRICETVBDAK4"11" 100 4 100 1505"11" 125 1 125 1508"13" 140 3 125 14010"14" 100 2 100 150 ===================================================== Сам процесс анализа сейчас опишу: данные должны анализироваться последовательно по колонке DT: ID DTPRICETVBDAK1 "02" 100 1 100 1502 "02" 100 1 100 1503 "03" 100 1 100 1504 "11" 100 1 100 150 в первых 4х строчках колонки PRICE, BD и AK одинаковые, значит берем самый большой DT из этих 4х строчек, а TV суммируем и выходит ID DTPRICETVBDAK4"11" 100 4 100 150 дальше одна строка IDDTPRICETVBDAK5"11" 125 1 125 150 так как следующая за ней строка уже другая по колонкам PRICE, BD и AK то заносим ее неизменно, как есть дальше идут три одинаковые строки IDDTPRICETVBDAK6 "12" 140 1 125 1407 "13" 140 1 125 1408 "13" 140 1 125 140 снова DT самый большой, TV суммируем и выходит ID DTPRICETVBDAK8"13" 140 3 125 140 последние две строки по аналогии из ID DTPRICETVBDAK9"13" 100 1 100 15010"14" 100 1 100 150 в ID DTPRICETVBDAK10"14" 100 2 100 150 спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 03:44 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
и вдогонку еще вопрос: по совету VSVLAD попробовал изменить структуру БД добавил еще одну колонку, обозвал ее idprice и по условию увеличиваю ее на единицу получилась такая таблица ID DT PRICE TV BD AK idprice1 "02" 100 1 100 15012 "02" 100 1 100 15013 "03" 100 1 100 15014 "11" 100 1 100 15015 "11" 125 1 125 15026 "12" 140 1 125 14037 "13" 140 1 125 14038 "13" 140 1 125 14049 "13" 100 1 100 150510 "14" 100 1 100 1505 применил Код: sql 1.
Вывод занял 5 секунд из 10.000 строк Почему так долго ? у меня в программе тупой последовательный перебор меньше времени занимает индексы по idprice и dt построены ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 03:58 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
модераторам: в предыдущем посте напутал с последней колонкой должно быть : ID DT PRICE TV BD AK idprice1 "02" 100 1 100 150 12 "02" 100 1 100 150 13 "03" 100 1 100 150 14 "11" 100 1 100 150 15 "11" 125 1 125 150 26 "12" 140 1 125 140 37 "13" 140 1 125 140 38 "13" 140 1 125 140 39 "13" 100 1 100 150 410 "14" 100 1 100 150 4 если возможно замените таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 04:02 |
|
Вопрос про Select
|
|||
---|---|---|---|
#18+
mtgate Код: sql 1.
Вывод занял 5 секунд из 10.000 строк Почему так долго ? у меня в программе тупой последовательный перебор меньше времени занимает индексы по idprice и dt построены То, что индекс есть, ещё не означает что СУБД будет его использовать при выполнении запроса... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 06:54 |
|
|
start [/forum/topic.php?fid=54&fpage=12&tid=2008760]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 400ms |
0 / 0 |