#mysql #count #group-by #sum #percentage
#mysql #подсчет #группировка по #сумма #процент
Вопрос:
У меня есть следующий сценарий количества людей и типа, входящих в помещение, округленный до часа.
Date-time Type
2014-01-01 01:00:00 Employee
2014-01-01 01:00:00 Visitor
2014-01-01 01:00:00 Employee
2014-01-01 02:00:00 Visitor
2014-01-01 02:00:00 Visitor
2014-01-01 02:00:00 Visitor
2014-01-01 02:00:00 Employee
2014-01-01 03:00:00 Employee
2014-01-01 03:00:00 Visitor
2014-01-01 03:00:00 Employee
Я выполняю запрос, чтобы сгруппировать их вместе
select
count(*),
HOUR(Date-Time),
Type
from table1
where Date(Date-time)='2014-01-01'
group by HOUR(Date-Time), Type;
Это дает мне следующую разбивку
count(*) HOUR Type
2 1 Employee
1 1 Visitor
1 2 Employee
3 2 Visitor
2 3 Employee
1 3 Visitor
Я пытаюсь получить процент от типа сотрудника, который вошел в здание, на основе общего количества подсчетов в час. Таким образом, за 1 час в помещение вошло в общей сложности 3 человека, процент для сотрудника будет (2/3 * 100) = 66,66%, для посетителя будет (1/3 * 100) = 33,33%
Результат, который я хочу, это
count(*) HOUR Type Percentage
2 1 Employee 66.66
1 1 Visitor 33.33
1 2 Employee 25.00
3 2 Visitor 75.00
so on....
Комментарии:
1. У вас нет PK. Это проблема
2. Ах, так это невозможно? Извините, у меня очень мало опыта работы с базами данных.
3. Ну, вы всегда можете изготовить ключ, но это ваши данные, поэтому я неохотно рассказываю вам, как вы могли бы это сделать.