2016-09-30 3 views
0

Я имею таблицу, в которой есть много столбцов я хочу сделать группу по 1 колонку, чтобы получить количество уникальных записей она оказывает данные около 6 крорагруппировка в больших данных без индекса

им с помощью запроса в

select distinct lower(TITLE) , count(lower(TITLE)) as CountOf 
from table_name2 
where 
((LENGTH(lower(TITLE)) - LENGTH(replace(lower(TITLE), ' ', '')))+1) > 3 
HAVING COUNT(lower(TITLE))>1 
group by lower(TITLE) 

Как я могу сделать это в эффективный способ, что если название «область альпинарий» и присутствует в поле TITLE 4 раза, то я получить его countof -> 4

+1

просто удалить 'distinct' и это все я думаю –

+0

также двигаться' HAVING COUNT (нижний (TITLE))> 1' последним, после группы по – MtwStark

+0

mysql or oracle? Кроме того, у вас есть избыточное значение (count (a) = count (lower (a)), length (a) = length (lower (a))) – Aleksej

ответ

0

вы можете попробовать следующее:

select 
lower(TITLE) , 
count(lower(TITLE)) as CountOf 
from table_name2 
where 
REGEXP_COUNT ('asdaasd ', '\s')+1 > 3 
HAVING COUNT(TITLE)>1 
group by TITLE 
0

это должно сделать трюк:

select TITLE , count(TITLE) as CountOf 
from (
    select LOWER(title) title 
    from table_name2) t 
where TITLE like '% % % %' 
group by TITLE 
HAVING COUNT(TITLE)>1 
Смежные вопросы