Clickhouse 中的数组元素数
Array element count in clickhouse
我有一个 table 喜欢:
| key | seq | words |
| '1' | '123' |['AAA', 'BBB']|
| '1' | '456' |['AAA', 'CCC']|
我想获取键为“1”的每个元素的计数,例如
| key | result_words |
| '1' |[('AAA',2),('BBB',1),('CCC',1)|
我尝试了一些数组函数但失败了。最好的方法是什么?
create table test Engine=Memory as
select '1' key , '123' seq, ['AAA', 'BBB'] words union all
select '1', '456' ,['AAA', 'CCC'];
SELECT
key,
arrayZip((sumMap(words, arrayResize(CAST([], 'Array(UInt64)'), length(words), 1)) AS x).1, x.2) AS r
FROM test
GROUP BY key
┌─key─┬─r───────────────────────────────┐
│ 1 │ [('AAA',2),('BBB',1),('CCC',1)] │
└─────┴─────────────────────────────────┘
SELECT key, groupArray((word, count)) AS result
FROM
(
SELECT key, word, count() AS count
FROM
(
/* Emulate the test dataset. */
SELECT data.1 AS key, data.2 AS seq, data.3 AS words
FROM
(
SELECT arrayJoin([
('1', '123', ['AAA', 'BBB']),
('1', '456', ['AAA', 'CCC'])]) AS data
)
)
ARRAY JOIN words AS word
GROUP BY key, word
)
GROUP BY key
/*
┌─key─┬─result──────────────────────────┐
│ 1 │ [('BBB',1),('AAA',2),('CCC',1)] │
└─────┴─────────────────────────────────┘
*/
我有一个 table 喜欢:
| key | seq | words |
| '1' | '123' |['AAA', 'BBB']|
| '1' | '456' |['AAA', 'CCC']|
我想获取键为“1”的每个元素的计数,例如
| key | result_words |
| '1' |[('AAA',2),('BBB',1),('CCC',1)|
我尝试了一些数组函数但失败了。最好的方法是什么?
create table test Engine=Memory as
select '1' key , '123' seq, ['AAA', 'BBB'] words union all
select '1', '456' ,['AAA', 'CCC'];
SELECT
key,
arrayZip((sumMap(words, arrayResize(CAST([], 'Array(UInt64)'), length(words), 1)) AS x).1, x.2) AS r
FROM test
GROUP BY key
┌─key─┬─r───────────────────────────────┐
│ 1 │ [('AAA',2),('BBB',1),('CCC',1)] │
└─────┴─────────────────────────────────┘
SELECT key, groupArray((word, count)) AS result
FROM
(
SELECT key, word, count() AS count
FROM
(
/* Emulate the test dataset. */
SELECT data.1 AS key, data.2 AS seq, data.3 AS words
FROM
(
SELECT arrayJoin([
('1', '123', ['AAA', 'BBB']),
('1', '456', ['AAA', 'CCC'])]) AS data
)
)
ARRAY JOIN words AS word
GROUP BY key, word
)
GROUP BY key
/*
┌─key─┬─result──────────────────────────┐
│ 1 │ [('BBB',1),('AAA',2),('CCC',1)] │
└─────┴─────────────────────────────────┘
*/