Size: a a a

2020 April 02

AS

Anatoly Shirokov in Qt
Joy Narical
Почему у них в примерах ДВА столбца?
пример
источник

JN

Joy Narical in Qt
ага, но попытка расширить это на 5 столбцов приводит к ошибке
источник

JN

Joy Narical in Qt
которая показывает что group by работает как-то хитрее, и это не объяснено в статье выше
источник

AS

Anatoly Shirokov in Qt
Joy Narical
которая показывает что group by работает как-то хитрее, и это не объяснено в статье выше
я могу объяснить, если ты не будешь говорить загадками
источник

AS

Anatoly Shirokov in Qt
покажи ошибку
источник

JN

Joy Narical in Qt
Anatoly Shirokov
покажи ошибку
это блин сложно )) я больше часа назад экспериментировал
источник

JN

Joy Narical in Qt
Anatoly Shirokov
я могу объяснить, если ты не будешь говорить загадками
Можно по другому?
источник

JN

Joy Narical in Qt
Сама логика group by - правильно ли я её понял?
мы указываем в select поле, допустим timestamp, и делаем group by timestamp
все остальные поля в select надо обязательно оборачивать в агрегатные функции?
источник

JN

Joy Narical in Qt
то есть, если группирующее поле даёт на выходе строго 1 запись на каждое уникальное значение, то для остальных полей надо определить какое значение взять
источник

AS

Anatoly Shirokov in Qt
Joy Narical
Сама логика group by - правильно ли я её понял?
мы указываем в select поле, допустим timestamp, и делаем group by timestamp
все остальные поля в select надо обязательно оборачивать в агрегатные функции?
да
источник

AS

Anatoly Shirokov in Qt
Joy Narical
то есть, если группирующее поле даёт на выходе строго 1 запись на каждое уникальное значение, то для остальных полей надо определить какое значение взять
да
источник

AS

Anatoly Shirokov in Qt
я здесь подумал, можно и с join решить твою задачу
источник

AS

Anatoly Shirokov in Qt
create cursor tmp (a i, b i, c i)

insert into tmp values(1, 2, 3)
insert into tmp values(1, 3, 4)
insert into tmp values(2, 2, 3)
insert into tmp values(2, 3, 4)

select ta.* ;
from tmp as ta ;
 join tmp as tb on tb.a == ta.a and tb.b<ta.b

на выходе
          A          B          C          
         1          3          4
         2          3          4
источник

RG

Renat Garaev in Qt
Anatoly Shirokov
create cursor tmp (a i, b i, c i)

insert into tmp values(1, 2, 3)
insert into tmp values(1, 3, 4)
insert into tmp values(2, 2, 3)
insert into tmp values(2, 3, 4)

select ta.* ;
from tmp as ta ;
 join tmp as tb on tb.a == ta.a and tb.b<ta.b

на выходе
          A          B          C          
         1          3          4
         2          3          4
Урок SQL)
источник

JN

Joy Narical in Qt
тогда не получится ли так, что на выходе мы получим запись, все поля которой надерганы из совсем разных записей?
1 3 5
1 5 3
select column1, MAX(column1), MAX(column3) group by column1
не даст ли случайно
1 5 5
источник

AS

Anatoly Shirokov in Qt
Joy Narical
тогда не получится ли так, что на выходе мы получим запись, все поля которой надерганы из совсем разных записей?
1 3 5
1 5 3
select column1, MAX(column1), MAX(column3) group by column1
не даст ли случайно
1 5 5
а, возможно и так
источник

AS

Anatoly Shirokov in Qt
в этом случае я чуть выше привел решение с join
источник

AS

Anatoly Shirokov in Qt
тогда можно явно задать критерий по которому выбирать требуемую запись
источник

JN

Joy Narical in Qt
@anatolijs @trasheloper решение найдено - DISTINCT ON
источник

П

Павел in Qt
красава 👍
источник