Скажем, у меня есть следующий столбец в таблице Teradata:Teradata - частота слова в колонке
Red ball
Purple ball
Orange ball
Я хочу, чтобы мой выход будет
Word Count
Red 1
Ball 3
Purple 1
Orange 1
Спасибо.
Скажем, у меня есть следующий столбец в таблице Teradata:Teradata - частота слова в колонке
Red ball
Purple ball
Orange ball
Я хочу, чтобы мой выход будет
Word Count
Red 1
Ball 3
Purple 1
Orange 1
Спасибо.
В TD14 есть STRTOK_SPLIT_TO_TABLE функция:
SELECT token, COUNT(*)
FROM TABLE (STRTOK_SPLIT_TO_TABLE(1 -- this is just a dummy, usually the PK column when you need to join
,table.stringcolumn
,' ') -- simply add other separating characters
RETURNS (outkey INTEGER,
tokennum INTEGER,
token VARCHAR(100) CHARACTER SET UNICODE
)
) AS d
GROUP BY 1
спасибо. – kittymad
Измените таблицу с этим
name |name2
_______________
red | ball
purple | ball
orange | ball
_______________
И затем выполнить следующий запрос:
select name, count(name)as name1_count from table_test
group by name
union all
select name2,count(name2)as name2_count from table_test
group by name2;
К сожалению нет, это единственная колонка, о которой я говорю, и столбец может содержать до 10-15 слов. – kittymad
Вот как я бы обрабатывать что-то вроде этого:
WITH RECURSIVE CTE (POS, NEW_STRING, REAL_STRING) AS
(
SELECT
0, CAST('' AS VARCHAR(100)),TRIM(word)
FROM wordcount
UNION ALL
SELECT
CASE WHEN POSITION(' ' IN REAL_STRING) > 0
THEN POSITION(' ' IN REAL_STRING)
ELSE CHARACTER_LENGTH(REAL_STRING)
END DPOS,
TRIM(BOTH ' ' FROM SUBSTR(REAL_STRING, 0, DPOS+1)),
TRIM(SUBSTR(REAL_STRING, DPOS+1))
FROM CTE
WHERE DPOS > 0
)
SELECT TRIM(NEW_STRING) as word,
count (*)
FROM CTE
group by word
WHERE pos > 0;
который будет возвращать:
word Count(*)
orange 1
purple 1
red 1
ball 3
Может быть более простой способ с регулярным выражением в 14, но я еще не испортил его.
EDIT: Удалены некоторые ненужные столбцы из запроса.
Я как-то получаю другой ответ, когда я делаю такой подсчет: Выберите сумму (если цвет как «% фиолетовый%», а затем еще 1 конец) из wordcount Не на этой таблице примеров, а на всей моей таблице. Любая идея почему? – kittymad
Никакой подсказки, если честно. Попробуйте ответить dnoeth над моей. Это, безусловно, намного чище. – Andrew
Они оба дают мне тот же результат. Я принял ответ dnoeth, потому что он действительно опрятный. Большое спасибо, очень ценю вашу помощь. – kittymad
Какой ваш релиз TD? – dnoeth
SQL Assistant Version 14.10.0.05 – kittymad
Это клиентская версия, что возвращается 'select * from dbc.dbcinfoV; *? – dnoeth