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
'sourcecode' 카테고리의 다른 글
C# 문자열.IsNullOrEmpty Javascript 등가 (0) | 2023.08.22 |
---|---|
SpringBoot 애플리케이션에서 SpringData JPA 및 SpringData Elastic 검색 리포지토리를 동일한 도메인 클래스에서 어떻게 사용합니까? (0) | 2023.08.22 |
Oracle 테이블 동의어에서 최대 절전 모드 스키마 유효성 검사 실패 (0) | 2023.08.22 |
PHP로 디렉토리를 쓸 수 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.08.22 |
로컬 DB 서버에 연결하는 중 오류 발생 (0) | 2023.08.22 |