Я пишу запрос, который учитывает жалобы компании. Запрос должен засчитывать общее количество жалоб от компании, а также разбить его на того, кто звонил из компании, чтобы подать жалобу. Так пример вывод будет:Несколько счетчиков в запросе
Company Ref Company Name Company Complaints Caller Caller Complaints
11 Argos 10 Steve 8
11 Argos 10 JIM 2
Так как вы можете видеть, что запрос подсчитывает общее количество жалоб, то и разбивает его о том, кто жаловался. До сих пор у меня все отличное от общего количества. Мой код:
SELECT COMPANYREF,
COMPANY,
(SELECT COUNT(COMPANYREF)
FROM XCALLSTABLE) AS CompanyCalls,
CALLER,
COUNT(*)
FROM XCALLSTABLE
JOIN XCUSTOMERTABLE ON (XCALLSTABLE.COMPANYREF = XCUSTOMERTABLE.CUSTREF)
JOIN XTELEPHONETABLE ON (XCUSTOMERTABLE.TELEPHONE = XTELEPHONETABLE.PHONENUMBER)
GROUP BY COMPANYREF,
COMPANY,
CALLER
HAVING COUNT(*) > 0 ;
Некоторый пример вывод для текущего кода:
Company Ref Company Name Company Complaints Caller Caller Complaints
145 Comfiture Traders 500 Alexis Patel 4
Вопрос здесь общее количество для компании просто подсчитывает каждую строку, в то время как я пытаюсь посчитать происходящих в этой компании.
Любая помощь была бы принята с благодарностью.
Использование кода sstan дал результат
111 Medusa Shipping 4 Lily Morgan 5
111 Medusa Shipping 4 Ruby Walker 6
В то время как результат должен быть
111 Medusa Shipping 11 Lily Morgan 5
111 Medusa Shipping 11 Ruby Walker 6
Я думаю, что вы будете в порядке, если вы добавите MAX (...) вокруг подзаголовка для CompanyCalls. Как SELECT COMPANYREF, COMPANY, MAX ((SELECT ... FROM XCALLSTABLE)) как CompanyCalls ... Но вам также может понадобиться JOIN в вашем подзапросе, чтобы обеспечить одинаковые наборы данных. – Dennis