Cảm ơn bạn đã dành thời gian đọc và trả lời câu hỏi của tôi.Sắp xếp theo số theo SQL và được nhóm lại
Tôi đã là một vấn đề nhỏ phân loại tôi chỉ cho bạn:
truy vấn SQL của tôi là:
SELECT p.advisor_create, COUNT(p.id) AS Nb, IF(p.cancel_advisor IS
NULL, "no", "yes") AS refund
FROM payment p
WHERE p.type = 'CESSATION'
AND p.date BETWEEN '2017-01-01 00:00:00' AND '2017-11-31 23:59:59'
GROUP BY p.advisor_create, refund
ORDER BY p.advisor_create, Nb DESC
Các dữ liệu tôi nhận được từ này là như thế:
+-------+---+------+
|advisor| NB|refund|
+-------+---+------+
| 170432| 50| no|
| 170432| 4| yes|
| 175222| 30| no|
| 175222| 3| yes|
| 182985|304| no|
| 182985| 19| yes|
| 362912|360| no|
| 362912| 13| yes|
+-------+---+------+
Và tôi sẽ sắp xếp như sau:
+-------+---+------+
|advisor| NB|refund|
+-------+---+------+
| 362912|360| no|
| 362912| 13| yes|
| 182985|304| no|
| 182985| 19| yes|
| 170432| 50| no|
| 170432| 4| yes|
| 175222| 30| no|
| 175222| 3| yes|
+-------+---+------+
Sắp xếp theo MAX (NB) của cùng một "cố vấn" và nhóm hai dòng của một cố vấn lại với nhau.
Cảm ơn bạn một lần nữa vì sự giúp đỡ của bạn.
Giải pháp: Thank để @ gordon-linoff cho điều này
SELECT p.advisor_create, COUNT(p.id) AS Nb,
IF(p.cancel_advisor IS NULL, 'no', 'yes') AS refund
FROM payment p
WHERE p.type = 'CESSATION' AND
p.date >= '2017-01-01' AND
p.date < '2017-12-01'
GROUP BY p.advisor_create, refund
ORDER BY (SELECT COUNT(*)
FROM payment p2
WHERE p2.advisor_create = p.advisor_create AND
p2.type = 'CESSATION' AND
p2.date >= '2017-01-01' AND
p2.date < '2017-12-01' AND
p2.cancel_advisor IS NULL
) DESC,
p.advisor_create, Nb DESC
Cảm ơn câu trả lời của bạn. Đó là những gì tôi muốn. –