Как отобразить последнюю строку подсчета выбора вместо первой строки?

Имею вот такую ​​таблицу calls

id | clientid | salespersonid | duration | statusid | last_update
1  | c11      | sp99          | 05:00    | 1        | yyyy
2  | c11      | sp99          | 06:00    | 1        | yyyy
3  | c11      | sp99          | 07:00    | 3        | yyyy
4  | c12      | sp99          | 08:00    | 3        | yyyy

Я выполняю этот запрос, чтобы подсчитать количество звонков на одного клиента для каждого продавца.

select *,count(wpc.id) as num_of_calls 
                                    from calls wpc
                                    where wpc.salespersonid=?
                                    group by wpc.clientid
                                    order by wpc.last_update desc

Это возвращает этот результат

id | clientid | salespersonid | duration | statusid | last_update|num_of_calls
1  | c11      | sp99          | 05:00    | 1        | yyyy       |3
4  | c12      | sp99          | 08:00    | 3        | yyyy       |1

С запросом все в порядке, но меня не устраивает порядок, в котором программа считает и отображает строки. Он отображает первую строку подсчета. Я хочу, чтобы отображалась последняя строка каждого счетчика.

Так что результат должен быть

id | clientid | salespersonid | duration | statusid | last_update|num_of_calls
3  | c11      | sp99          | 07:00    | 3        | yyyy       |3
4  | c12      | sp99          | 08:00    | 3        | yyyy       |1

Как я могу отобразить последнюю строку каждого счетчика вместо первой?

Подойдет ли вам пункт limit?

7 Reeds 30.07.2018 18:08

@ 7Reeds: Да, если он правильно возвращает num_of_calls. Да.

Sadie 30.07.2018 18:09

Вы не можете гарантировать ни того, ни другого с таким запросом. Хотя обычно получается, что неагрегированные негруппированные поля - это первые встречается в MySQL; MySQL совсем не гарантирует этого. Любые неагрегированные негруппированные поля следует рассматривать как случайный выбор значений этих полей с сгруппированной комбинацией полей ... SELECT a, b, c FROM t GROUP BY a даже не гарантирует, что b и c будут из одной строки. Если вам нужна последняя (или первая строка) каждой группы, вам обычно нужен подзапрос, который идентифицирует эту строку, который затем объединяется для получения этой строки.

Uueerdo 30.07.2018 18:30

Этот запрос НЕ в порядке !!!

Strawberry 30.07.2018 18:37

@ Клубника: Хорошо? Не могли бы дать более подробную информацию? Кстати, MAX по-прежнему будет возвращать те же строки 1 и 4. Желаемый результат - строки 3 и 4.

Sadie 30.07.2018 18:47

@Uueerdo: Спасибо за этот звуковой комментарий. Не могли бы вы показать это мне? Я пробовал с MAX, и он не работает.

Sadie 30.07.2018 18:54

Это потому, что вы не изучили принятый ответ на связанный вопрос.

Strawberry 30.07.2018 18:54

Ответ, связанный с @Strawberry, охватывает именно то, о чем вы спрашиваете.

Uueerdo 30.07.2018 18:55
sqlfiddle.com/#!9/b14706/2
Strawberry 30.07.2018 19:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
64
1

Ответы 1

Дубликат Совместное использование ORDER BY и GROUP BY

Использование решения: https://stackoverflow.com/a/35053900/2397717

 SELECT wpc.*, COUNT(wpc.id) AS num_of_calls FROM (SELECT * FROM calls ORDER BY last_update DESC) as wpc GROUP BY wpc.clientid

Нет, это не работает должным образом. Я только что это проверил.

Sadie 30.07.2018 18:41

Вот рабочий рабочий пример

Sookie Singh 30.07.2018 18:43

Он по-прежнему возвращает строку 1 и строку 4. Он должен возвращать строки 3 и 4.

Sadie 30.07.2018 18:45

Теперь он должен работать.

Sookie Singh 30.07.2018 18:56

Другие вопросы по теме