Ответ 1
SELECT COUNT(count) FROM (SELECT COUNT(source) AS count
FROM call_details
GROUP BY source
HAVING count > 1) as A
Этот запрос:
SELECT COUNT(source) AS count
FROM call_details
GROUP BY source
HAVING count >1
Возвращает около 1500 (число, которое я ищу) приводит только к полю count. Как я могу также вернуть сумму всех полей счетчика? Когда я пытаюсь
SELECT COUNT(source) AS count,
SUM(count) as total
FROM call_details
GROUP BY source
HAVING count >1
Я получаю "Неизвестный столбец" в поле "Список полей".
и
SELECT COUNT(source) AS count,
SUM(COUNT(source)) as total
FROM call_details
GROUP BY source
HAVING count >1
дает мне "Недопустимое использование групповой функции"
Любые идеи? Я могу сделать mysql_num_rows($result)
первого набора (чтобы получить нужную мне информацию), но я действительно хочу сделать это через MySQL.
SELECT COUNT(count) FROM (SELECT COUNT(source) AS count
FROM call_details
GROUP BY source
HAVING count > 1) as A
Вы не можете получить глобальную общую сумму в контексте строки. В то время, когда COUNT() завершается в любой конкретной строке, для SUM ничего нет, потому что другие строки еще не вычислены.
Сначала вы должны запустить запрос SUM, чтобы получить свою индивидуальную статистику, затем суммировать вручную в своем script или повторно запустить запрос с помощью предложения SUM:
SELECT SUM(count) FROM (
SELECT original query here...
)
Попробуйте это
select mycount, sum(mycount) as sumcount
from
(SELECT COUNT(source) AS mycount FROM call_details GROUP BY source HAVING mycount >1) counttable
Просто удалите предложение "Group by" в запросе select, который считает
# first, get your counts by source
SELECT COUNT(source) AS count
FROM call_details
GROUP BY source
HAVING count >1
# then, get the overall total
SELECT COUNT(source) AS count
FROM call_details
HAVING count >1
Предполагая, что вы все равно получите все результаты в приложении, я думаю, что наиболее эффективным способом было бы просто суммировать его в коде приложения.