Я использую Пример базы данных MySQL Tutorial .
Мне нужно найти продавца с худшими продажами (самые низкие venta_por_empleado
) и лучшими продажами (самые высокие venta_por_empleado
)) за каждый semestre
и city
. Используя временных таблиц, я получаю следующий набор результатов (tbl_ventas_ciudad_semestre
, временная таблица):
| salesRepEmployeeNumber | Nombre_Empleado | city | venta_por_empleado | officeCode | orden_year | semestre | periodo |
|------------------------|------------------|---------------|--------------------|------------|------------|----------|---------|
| 1504 | Barry Jones | London | 6719 | 7 | 2019 | 1 | 2019-1 |
| 1286 | Foon Yue Tseng | NYC | 5016 | 3 | 2019 | 1 | 2019-1 |
| 1323 | George Vanauf | NYC | 6372 | 3 | 2019 | 1 | 2019-1 |
| 1702 | Martin Gerard | Paris | 4180 | 4 | 2019 | 1 | 2019-1 |
| 1401 | Pamela Castillo | Paris | 8464 | 4 | 2019 | 1 | 2019-1 |
| 1370 | Gerard Hernandez | Paris | 12021 | 4 | 2019 | 1 | 2019-1 |
| 1166 | Leslie Thompson | San Francisco | 3587 | 1 | 2019 | 1 | 2019-1 |
| 1165 | Leslie Jennings | San Francisco | 11208 | 1 | 2019 | 1 | 2019-1 |
| 1611 | Andy Fixter | Sydney | 5550 | 6 | 2019 | 1 | 2019-1 |
| 1621 | Mami Nishi | Tokyo | 4923 | 5 | 2019 | 1 | 2019-1 |
| 1501 | Larry Bott | London | 7776 | 7 | 2019 | 2 | 2019-2 |
| 1337 | Loui Bondur | Paris | 6186 | 4 | 2019 | 2 | 2019-2 |
| 1188 | Julie Firrelli | Boston | 4227 | 2 | 2020 | 1 | 2020-1 |
| 1612 | Peter Marsh | Sydney | 6036 | 6 | 2020 | 1 | 2020-1 |
| 1216 | Steve Patterson | Boston | 4876 | 2 | 2020 | 2 | 2020-2 |
Чтобы найти продавца с наихудшими продажами, я бы применил MIN(venta_por_empleado)
в таблицу:
SELECT
Nombre_Empleado,
city,
MIN(venta_por_empleado) as venta_por_empleado,
orden_year,
semestre,
periodo
FROM tbl_ventas_ciudad_semestre
GROUP BY
city, periodo
ORDER BY
periodo ASC, venta_por_empleado DESC;
Результат:
| Nombre_Empleado | city | venta_por_empleado | orden_year | semestre | periodo |
|-----------------|---------------|--------------------|------------|----------|---------|
| Barry Jones | London | 6719 | 2019 | 1 | 2019-1 |
| Foon Yue Tseng | NYC | 5016 | 2019 | 1 | 2019-1 |
| Martin Gerard | Paris | 4180 | 2019 | 1 | 2019-1 |
| Leslie Thompson | San Francisco | 3587 | 2019 | 1 | 2019-1 |
| Andy Fixter | Sydney | 5550 | 2019 | 1 | 2019-1 |
| Mami Nishi | Tokyo | 4923 | 2019 | 1 | 2019-1 |
| Larry Bott | London | 7776 | 2019 | 2 | 2019-2 |
| Loui Bondur | Paris | 6186 | 2019 | 2 | 2019-2 |
| Julie Firrelli | Boston | 4227 | 2020 | 1 | 2020-1 |
| Peter Marsh | Sydney | 6036 | 2020 | 1 | 2020-1 |
| Steve Patterson | Boston | 4876 | 2020 | 2 | 2020-2 |
Чтобы найти продавца с лучшими продажами, я бы применил MAX(venta_por_empleado)
в таблицу:
SELECT
Nombre_Empleado,
city,
MAX(venta_por_empleado) as venta_por_empleado,
orden_year,
semestre,
periodo
FROM tbl_ventas_ciudad_semestre
GROUP BY
city, periodo
ORDER BY
periodo ASC, venta_por_empleado DESC;
| Nombre_Empleado | city | venta_por_empleado | orden_year | semestre | periodo |
|-----------------|---------------|--------------------|------------|----------|---------|
| Barry Jones | London | 6719 | 2019 | 1 | 2019-1 |
| Foon Yue Tseng | NYC | 6372 | 2019 | 1 | 2019-1 |
| Martin Gerard | Paris | 12021 | 2019 | 1 | 2019-1 |
| Leslie Thompson | San Francisco | 11208 | 2019 | 1 | 2019-1 |
| Andy Fixter | Sydney | 5550 | 2019 | 1 | 2019-1 |
| Mami Nishi | Tokyo | 4923 | 2019 | 1 | 2019-1 |
| Larry Bott | London | 7776 | 2019 | 2 | 2019-2 |
| Loui Bondur | Paris | 6186 | 2019 | 2 | 2019-2 |
| Julie Firrelli | Boston | 4227 | 2020 | 1 | 2020-1 |
| Peter Marsh | Sydney | 6036 | 2020 | 1 | 2020-1 |
| Steve Patterson | Boston | 4876 | 2020 | 2 | 2020-2 |
Используя MIN () и MAX (), он возвращает правильные значения для номеров продаж, но имена торговых представителей, связанных с этим номером продаж, не совпадают.
Как получитьправильное имя для правильного номера продаж?