MySQL получает процент от количества - PullRequest
0 голосов
/ 14 февраля 2019

Мои данные хотели бы это

Name    Similar_Percentage      
A           15
B           20
C           65

Я хочу вот так

Similar_Percentage          count(*)
Less than 20            2
Less than 70            1

Как написать запрос для этого.Я знаю, что сделал это, но он показывает данные по одному.

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

MySQL позволяет использовать псевдонимы столбцов в group by.Это упрощает запрос.

Я также рекомендую явный order by, поэтому вы получите результаты в нужном вам порядке:

select (case when Similar_Percentage <= 20  then 'Less than 20'
             when Similar_Percentage < 70 then 'Less than 70'
        end) as Percentage,
       count(*)
from cte
group by Percentage
order by min(Similar_Percentage)
0 голосов
/ 14 февраля 2019

Другой подход может быть следующим:

SELECT 'Less than 20' Percentage, 
       Count(*)       [Count(*)] 
FROM   tablename 
WHERE  similar_percentage <= 20 
UNION ALL 
SELECT 'Less than 70' Percentage, 
       Count(*)       [Count(*)] 
FROM   tablename 
WHERE  similar_percentage <= 70 
       AND similar_percentage > 20 
0 голосов
/ 14 февраля 2019

Используйте case выражение в производной таблице (подзапрос) для выполнения классификации.GROUP BY его результат:

select percentage, count(*)
from
(
    select case when Similar_Percentage <= 20 then 'Less than 20'
                when Similar_Percentage <= 70 then 'Less than 70'
                else 'More than 70'
           end as percentage
    from tablename
) dt
group by percentage
0 голосов
/ 14 февраля 2019

вариант использования, когда

  select case when Similar_Percentage<20  then 'Less than 20'
            when (Similar_Percentage<70)  then 'Less than 70' end as Percentage,count(*)
    from table group by case when Similar_Percentage<20 then 'Less than 20'
            when (Similar_Percentage<70) then 'Less than 70' end


with cte as (

select  15 as Similar_Percentage
union all
select 20
union all
select 65

)select case when Similar_Percentage<=20  then 'Less than 20'
            when (Similar_Percentage<70)  then 'Less than 70' end as Percentage,count(*)
    from cte group by case when Similar_Percentage<=20 then 'Less than 20'
            when (Similar_Percentage<70) then 'Less than 70' end

демонстрационная ссылка

Percentage  count(*)
Less than 20    2
Less than 70    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...