184 похожих чатов

Максимально глупый вопрос: Есть таблица: CREATE TABLE IF

NOT EXISTS flows
(
SrcAddr FixedString(16),
DstAddr FixedString(16),
Bytes UInt64
)
Надо объединить колонки SrcAddr и DstAddr в одну колонку Addr и посчитать сумму по байтам. SELECT UNION? Или как-то лучше есть вариант?

14 ответов

14 просмотров

select concat(srcaddr,dstaddr) as addr

Valeriy-Simonov Автор вопроса
Rainbow Dash
select concat(srcaddr,dstaddr) as addr

они разные, мне два значения в одну колонку, следом Addr ——- SrcAddr1 DstAddr1 SrcAddr2 DstAddr2

Valeriy-Simonov Автор вопроса
Rainbow Dash
строго через 1?

неважно совершенно

Valeriy-Simonov Автор вопроса
Rainbow Dash
neighbor помогбы

сдвигать не нужно

Valeriy-Simonov Автор вопроса

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

да, просто select ... union all select ... чего выдумывать

Valeriy-Simonov Автор вопроса
ivan
да, просто select ... union all select ... чего вы...

SELECT number AS id1, number+10 AS id2, (number + 1)*10 AS Bytes FROM system.numbers LIMIT 10 ┌─id1─┬─id2─┬─Bytes─┐ │ 0 │ 10 │ 10 │ │ 1 │ 11 │ 20 │ │ 2 │ 12 │ 30 │ │ 3 │ 13 │ 40 │ │ 4 │ 14 │ 50 │ │ 5 │ 15 │ 60 │ │ 6 │ 16 │ 70 │ │ 7 │ 17 │ 80 │ │ 8 │ 18 │ 90 │ │ 9 │ 19 │ 100 │ └─────┴─────┴───────┘ SELECT id1 AS id, SUM(Bytes) AS sumBytes FROM ( SELECT number AS id1, number+10 AS id2, (number + 1)*10 AS Bytes FROM system.numbers LIMIT 10 ) GROUP BY id1 UNION ALL SELECT id2 AS id, SUM(Bytes) AS sumBytes FROM ( SELECT number AS id1, number+10 AS id2, (number + 1)*10 AS Bytes FROM system.numbers LIMIT 10 ) GROUP BY id2 ┌─id─┬─sumBytes─┐ │ 0 │ 10 │ │ 4 │ 50 │ │ 3 │ 40 │ │ 2 │ 30 │ │ 5 │ 60 │ │ 1 │ 20 │ │ 6 │ 70 │ │ 7 │ 80 │ │ 9 │ 100 │ │ 8 │ 90 │ └────┴──────────┘ ┌─id─┬─sumBytes─┐ │ 14 │ 50 │ │ 18 │ 90 │ │ 19 │ 100 │ │ 15 │ 60 │ │ 16 │ 70 │ │ 12 │ 30 │ │ 11 │ 20 │ │ 10 │ 10 │ │ 13 │ 40 │ │ 17 │ 80 │ └────┴──────────┘ лучше способа, получается, нет?

Valeriy Simonov
SELECT number AS id1, number+10 AS id2, (number + ...

я, похоже, вашу задачу не понял я думал, вам нужно select addr, sum(bytes) from (select srcAddr as addr, bytes from table union all select dstAddr as addr, bytes from table) group by addr

Valeriy Simonov
SELECT number AS id1, number+10 AS id2, (number + ...

вам нужен общий трафик для каждого адреса? лучше так чтобы два прохода по таблице не делать select arrayJoin([id1,id2]) as id, sum(Bytes) from (SELECT number AS id1, number+10 AS id2, (number + 1)*10 AS Bytes FROM system.numbers LIMIT 10) group by id;

Valeriy-Simonov Автор вопроса
ivan
я, похоже, вашу задачу не понял я думал, вам нужно...

так тоже работает, но выглядит расточительным по оперативе: SELECT id, SUM(Bytes) FROM ( SELECT id1 AS id, Bytes FROM ( SELECT number AS id1, number+10 AS id2, (number + 1)*10 AS Bytes FROM system.numbers LIMIT 10 ) UNION ALL SELECT id2 AS id, Bytes FROM ( SELECT number AS id1, number+10 AS id2, (number + 1)*10 AS Bytes FROM system.numbers LIMIT 10 ) ) GROUP BY id ┌─id─┬─sum(Bytes)─┐ │ 0 │ 10 │ │ 4 │ 50 │ │ 3 │ 40 │ │ 2 │ 30 │ │ 5 │ 60 │ │ 1 │ 20 │ │ 6 │ 70 │ │ 7 │ 80 │ │ 9 │ 100 │ │ 14 │ 50 │ │ 18 │ 90 │ │ 19 │ 100 │ │ 15 │ 60 │ │ 8 │ 90 │ │ 16 │ 70 │ │ 12 │ 30 │ │ 11 │ 20 │ │ 10 │ 10 │ │ 13 │ 40 │ │ 17 │ 80 │ └────┴────────────┘

select addr, sum(bytes) from flows array join [SrcAddr, DstAddr] as addr, [0, Bytes] as bytes group by addr

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта