Привет. Я работаю над запросом, который использует схему ниже, чтобы выяснить, как часто пользователи выполняют поиск по компании (приложение в основном позволяло вам выполнять поиск по компании)
SEARCH_LOG
----------
date_of_search (DATETIME)
company_id (INT)
COMPANIES
---------
id (INT)
company_name (VARCHAR)
(there are more columns but these are the relevant ones)
Итак, я запускаю следующий запрос:
SELECT company_name,COUNT(*) FROM companies LEFT OUTER JOIN search_log ON search_log.company_id=companies.id GROUP BY companies.id
Это замечательно, так как возвращает каждую компанию и количество выполненных поисков, однако я хочу выразить эти цифры в процентах. Моя реакция на коленный рефлекс состояла в том, чтобы просто выполнить следующий запрос отдельно:
SELECT COUNT(*) FROM search_log
Получите этот результат и просто делите на стороне приложения, однако это кажется действительно неэффективным, и я хотел бы сделать все это в одном запросе, если это возможно (желательно без использования подзапроса), но не знаю, как получить эту информацию.
Буду признателен за любую помощь или руководство.
РЕДАКТИРОВАТЬ: Может быть, я не совсем понял, что я после. Вместо того, чтобы получать результаты, как:
COMPANY_NAME | COUNT(*)
-----------------------
CompanyA | 1
CompanyB | 3
Я бы лучше увидел:
COMPANY_NAME | COUNT(*)
-----------------------
CompanyA | 25%
CompanyB | 75%
Очевидно, что форматирование не так уж важно, так как 25,25%, 0,25 все пригодны для использования.