SQL-запрос об использовании функций - Как получить максимальный счетчик списка - PullRequest
2 голосов
/ 20 апреля 2011

Как я могу запросить МАКСИМАЛЬНЫЙ СЧЕТ Номер транзакции ... Мой код выглядит следующим образом:

SELECT customer_id, COUNT(customer_id)
FROM rental
GROUP BY customer_id
HAVING MAX(COUNT(customer_id)); //I need to get the MAXIMUM COUNT of the list

Ответы [ 4 ]

3 голосов
/ 20 апреля 2011

Попробуйте:

SELECT customer_id, MAX(COUNT(customer_id))
FROM rental
GROUP BY customer_id;

или

SELECT top 1 customer_id, COUNT(customer_id)
FROM rental
GROUP BY customer_id
ORDER BY COUNT(customer_id) DESC
3 голосов
/ 20 апреля 2011

Если вы ищете customer_id с наибольшим количеством строк в таблице rental, вы можете использовать:

SELECT customer_id, COUNT(customer_id) as CustomerRowCount
FROM rental
GROUP BY customer_id
ORDER BY COUNT(customer_id) DESC
LIMIT 1

Приведенный выше запрос будет подсчитывать все записи для каждого customer_id, сортировать их в порядке убывания и затем выбирать только верхнюю строку. Максимальный счет для клиента будет представлен в CustomerRowCount.

РЕДАКТИРОВАТЬ
Конрад поднял вопрос о том, что две или более customer_id могут иметь одинаковое количество записей. Если бизнес-требование заключается в том, что в этом случае необходимо вернуть несколько записей, тогда его запрос даст вам искомый результат. Если должна быть возвращена только одна запись, тогда простым, последовательным способом разрыва связей будет просто взять пользователя с самым низким customer_id. Для этого вы можете просто изменить оператор ORDER BY на:

ORDER BY COUNT(customer_id) DESC, customer_id
2 голосов
/ 20 апреля 2011

Так как несколько клиентов могут иметь один и тот же Максимум количества, вы должны сделать следующее:

SELECT customer_id, 
       COUNT(customer_id) AS customerrowcount 
FROM   rental 
GROUP  BY customer_id 
HAVING COUNT(customer_id) = (SELECT COUNT(customer_id) 
                             FROM   rental 
                             GROUP  BY customer_id 
                             ORDER  BY COUNT(customer_id) DESC 
                             LIMIT  1) 

Однако, если вы согласны с выбором произвольного клиента, вам следует использовать ответ rsbarro

2 голосов
/ 20 апреля 2011

Запрос для MySQL

SELECT 
  *
FROM (SELECT 
        customer_id, 
        COUNT(customer_id) AS CountOfCustomer
      FROM rental
      GROUP BY customer_id) q1
ORDER BY CountOfCustomer DESC
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...