sourcecode

MySQL에서 합계()로 주문하려면 어떻게 해야 합니까?

copyscript 2023. 8. 22. 22:26
반응형

MySQL에서 합계()로 주문하려면 어떻게 해야 합니까?

자리가 있습니다.ID 이름 c_counts f_counts "

그리고 나는 모든 레코드를 주문하고 싶습니다.sum(c_counts+f_counts)하지만 이것은 효과가 없습니다.

SELECT * FROM table ORDER BY sum(c_counts+f_counts) LIMIT 20;

그룹화된 항목을 혼합하는 경우(즉, 그룹화된 항목)를 잊지 마십시오.SUM) 필드 및 그룹화되지 않은 필드는 그룹화되지 않은 필드 중 하나를 기준으로 그룹화해야 합니다.

사용해 보십시오.

SELECT SUM(something) AS fieldname
FROM tablename
ORDER BY fieldname

또는 다음과 같습니다.

SELECT Field1, SUM(something) AS Field2
FROM tablename
GROUP BY Field1
ORDER BY Field2

항상 다음과 같은 파생 쿼리를 수행할 수 있습니다.

SELECT
   f1, f2
FROM
    (
        SELECT SUM(x+y) as f1, foo as F2
        FROM tablename 
        GROUP BY f2
    ) as table1
ORDER BY 
    f1

많은 가능성!

이렇게 하면 됩니다.

SELECT ID,NAME, (C_COUNTS+F_COUNTS) AS SUM_COUNTS 
FROM TABLE 
ORDER BY SUM_COUNTS LIMIT 20

SUM 함수는 모든 행을 합하므로,order by조항은 쓸모가 없습니다, 대신 당신은 그것을 사용해야 할 것입니다.group by

사용해 볼 수 있습니다.

SELECT * 
FROM table 
ORDER BY (c_counts+f_counts) 
LIMIT 20

GROUP BY 절이 없으면 모든 합계가 모든 행을 단일 행으로 롤업하므로 쿼리가 작동하지 않습니다.예를 들어 이름을 기준으로 그룹화하고 합계(c_counts+f_counts)를 기준으로 정렬한 경우 유용한 결과를 얻을 수 있습니다.하지만 여러분은 무언가에 의해 그룹을 만들어야 할 것입니다.

여기서 제가 보는 문제는 "합"이 집합적인 함수라는 것입니다.

먼저 쿼리 자체를 수정해야 합니다.

Select sum(c_counts + f_counts) total, [column to group sums by]
from table
group by [column to group sums by]

그러면 다음과 같이 정렬할 수:

Select *
from (query above) a
order by total

편집: 하지만 Virat의 게시물을 참조하십시오.원하는 것은 그룹에 대한 전체 필드의 합계가 아니라 각 레코드에 대한 해당 필드의 합계입니다.그렇다면, Virat은 올바른 해결책을 가지고 있습니다.

언급URL : https://stackoverflow.com/questions/1309841/how-to-order-by-a-sum-in-mysql

반응형