Количество счетов MYSQL?

У меня таблица mysql:

id, visitorid, pageid 

Когда посетитель попадает на сайт, он хранит идентификатор своего посетителя и идентификатор страницы в строке.

Я пытаюсь извлечь количество посетителей, попавших на сайт ровно в X раз. (для диаграммы). поэтому сколько посетителей посещают только одну страницу, сколько посещают 2 страницы …

до сих пор я имею:

 SELECT COUNT(visid),visid FROM vislog GROUP BY visid ORDER BY COUNT(visid) DESC 

Но я не знаю, как сделать следующую часть подсчета подсчетов.

Можно ли сделать запрос mysql?

Изменить: я добавил свой ответ .

Solutions Collecting From Web of "Количество счетов MYSQL?"

Вы можете обернуть свой запрос внутри другого:

 SELECT cnt AS page_visits , COUNT(*) AS number_of_visitors FROM ( SELECT COUNT(*) AS cnt --- use: COUNT(DISTINCT page_id) --- for a different count FROM vislog GROUP BY visid ) AS grp GROUP BY cnt ORDER BY number_of_visitors ; 

или (я полагаю, это имеет смысл для передачи чисел на диаграмму), удалите ORDER BY который совпадает с положением:

 ORDER BY cnt ; 

Один из способов сделать это – обернуть этот запрос в другой:

 SELECT COUNT(visid) FROM ( SELECT COUNT(visid) AS cvisid, visid FROM vislog GROUP BY visid HAVING cvisid = 2) AS c 

Но я думаю, вам нужно получить гистограмму посещений: это можно сделать с помощью PHP (при условии, что запрос такой же, как и в вопросе):

 $results = array(); // query preparation skipped, as it's obviously done by the OP himself while ($row = $sth->fetch()) { $count = $row['cvisid']; if (isset($results[$count])) { $results[$count]++; } else { $results[$count] = 1; } } 

Или с самой MySQL:

 SELECT cvisid, COUNT(cvisid) AS cnt FROM ( SELECT visid, COUNT(visid) AS cvisid FROM vislog GROUP BY visid ) AS c GROUP BY cvisid 

Попробуйте использовать следующий запрос

 SELECT COUNT(a.page_visits) AS no_of_visitors, a.page_visits AS page_count FROM( SELECT COUNT(DISTINCT pageid) AS page_visits FROM vislog GROUP BY visid) AS a GROUP BY a.page_visits; 

Надеюсь, поможет…

Raina77ow (2-й ответ) вернул чистое решение в своем третьем блоке кода

  SELECT cvisid, COUNT(cvisid) AS cnt FROM ( SELECT visid, COUNT(visid) AS cvisid FROM vislog GROUP BY visid ) AS c GROUP BY cvisid 

Спасибо

Я мог бы решить это так:

 SELECT cnt, COUNT(cnt) FROM ( SELECT COUNT(visid) as cnt FROM vislog GROUP BY visid ) x GROUP BY cnt ORDER BY cnt ASC 

Маленький x важен.