[英]MySQL SELECT MAX of SUM() values
I have this MySQL query: 我有这个MySQL查询:
SELECT
SUM(scpe.scpe_estemated_days) AS total_days,
scp.cpl_startdate
FROM
studentcourseplanelements scpe
INNER JOIN
studentcourseplan scp ON scp.cpl_id = scpe.scpe_cpl_id
INNER JOIN
(SELECT
sd1.student_id, sd1.student_startdate
FROM
studentdates sd1
WHERE
sd1.student_id = '360'
LIMIT 1) sd ON sd.student_id = scp.student_id
GROUP BY scp.cpl_id
This outputs: 这输出:
+------------+---------------+
| total_days | cpl_startdate |
+------------+---------------+
| 5 | 2012-11-01 |
| 129 | 2012-11-02 |
+------------+---------------+
I want to select only the row with highest total_days
, in my example 129. 我想在我的例子129中只选择具有最高
total_days
的行。
How can I do this? 我怎样才能做到这一点?
this will show duplicate records having highest total_days
, eg 这将显示具有最高
total_days
重复记录,例如
+------------+---------------+
| total_days | cpl_startdate |
+------------+---------------+
| 5 | 2012-11-01 |
| 129 | 2012-11-02 | <= shown
| 129 | 2012-11-03 | <= shown
+------------+---------------+
query 询问
SELECT SUM(scpe.scpe_estemated_days) AS total_days,
scp.cpl_startdate
FROM studentcourseplanelements scpe INNER JOIN studentcourseplan scp
ON scp.cpl_id = scpe.scpe_cpl_id
INNER JOIN
(SELECT sd1.student_id, sd1.student_startdate
FROM studentdates sd1
WHERE sd1.student_id = '360'
LIMIT 1) sd ON sd.student_id = scp.student_id
GROUP BY scp.cpl_id
HAVING SUM(scpe.scpe_estemated_days) =
(
SELECT MAX(total_days)
FROM
(
SELECT SUM(scpe.scpe_estemated_days) AS total_days,
FROM studentcourseplanelements scpe INNER JOIN studentcourseplan scp
ON scp.cpl_id = scpe.scpe_cpl_id
INNER JOIN
(SELECT sd1.student_id, sd1.student_startdate
FROM studentdates sd1
WHERE sd1.student_id = '360'
LIMIT 1) sd ON sd.student_id = scp.student_id
GROUP BY scp.cpl_id
) s
)
try adding ORDER BY total_days DESC LIMIT 0,1
尝试添加
ORDER BY total_days DESC LIMIT 0,1
This will sort by most, and only return the top answer. 这将按大多数排序,并且仅返回最佳答案。
Basically, you want to order it by the SUM column descending, and then get the first record listed. 基本上,您希望按SUM列降序排序,然后获取列出的第一个记录。 Try this:
试试这个:
SELECT
SUM(scpe.scpe_estemated_days) AS total_days,
scp.cpl_startdate
FROM
studentcourseplanelements scpe
INNER JOIN
studentcourseplan scp ON scp.cpl_id = scpe.scpe_cpl_id
INNER JOIN
(SELECT
sd1.student_id, sd1.student_startdate
FROM
studentdates sd1
WHERE
sd1.student_id = '360'
LIMIT 1) sd ON sd.student_id = scp.student_id
ORDER BY SUM(scpe.scpe_estemated_days) DESC
GROUP BY scp.cpl_id
LIMIT 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.