programing

SQL에서 ID별로 그룹화된 모든 필드의 최대 평균을 찾는 방법은 무엇입니까?

starjava 2023. 8. 10. 18:08
반응형

SQL에서 ID별로 그룹화된 모든 필드의 최대 평균을 찾는 방법은 무엇입니까?

그래서 저는 50개가 넘는 필드가 있는 거대한 테이블을 가지고 있고 ID로 각 필드의 최대 평균을 찾아야 합니다.내 테이블은 다음과 같습니다.

    +----+--------+--------+-----+---------+
    | ID | field1 | field2 | ... | field50 |
    +----+--------+--------+-----+---------+
    | 1  | 234    | 12     | ... | 634     |
    +----+--------+--------+-----+---------+
    | 2  | 1      | 69     | ... | 34      |
    +----+--------+--------+-----+---------+
    | 3  | 512    | 1000   | ... | 420     |
    +----+--------+--------+-----+---------+
    | 4  | 11     | 69     | ... | 34      |
    +----+--------+--------+-----+---------+
    | 3  | 522    | 1337   | ... | 78      |
    +----+--------+--------+-----+---------+
    | 2  | 18     | 698    | ... | 348     |
    +----+--------+--------+-----+---------+
    | 3  | 32     | 1910   | ... | 40      |
    +----+--------+--------+-----+---------+

저는 이것을 할 수 있는 간단한 방법이 있는지 궁금합니다.현재 각 ID의 평균이 포함된 하위 쿼리에서 최대치를 가져오려고 합니다.위의 예제 표에서 하위 쿼리는 다음과 같은 것을 반환해야 합니다.

    +----+-------+-------+-----+-------+
    | ID | avg1  | avg2  | ... | avg50 |
    +----+-------+-------+-----+-------+
    | 1  | 234   | 12    | ... | 634   |
    +----+-------+-------+-----+-------+
    | 2  | 9.5   | ~990  | ... | 191   |
    +----+-------+-------+-----+-------+
    | 3  | ~355  | ~1416 | ... | 538   |
    +----+-------+-------+-----+-------+
    | 4  | 11    | 69    | ... | 34    |
    +----+-------+-------+-----+-------+

그리고 최종 결과는 다음과 같은 것을 반환해야 합니다.

    +-----------+-----------+-----+------------+
    | MAX(avg1) | MAX(avg2) | ... | MAX(avg50) |
    +-----------+-----------+-----+------------+
    | ~355      | ~1416     | ... | 634        |
    +-----------+-----------+-----+------------+

현재 제 SQL은 다음과 같습니다.

    SELECT MAX(avg1), MAX(avg2), ... , MAX(avg50)
    FROM (
        SELECT ID, AVG(field1) AS avg1, AVG(field2) AS avg2, ... , 
    AVG(field50) AS avg50
        FROM table
        GROUP BY ID
        AS subquery
    )

그런데 서브쿼리 끝에 LIMIT 문이 추가되고 일이 꼬이는 것 같아 서브쿼리 내에서 이상한 구문 오류가 발생하고 있습니다.저는 SQL을 비교적 처음 사용하는 편이며 현재의 방법이 가장 적합한 방법인지 잘 모르겠습니다.

코드를 수정하거나 50개 이상의 필드 이름을 수십억 번 입력할 필요가 없는 더 나은 솔루션을 제공할 수 있는 사람이 있다면 매우 감사하겠습니다.

제가 하려는 일에 대해 추가적인 설명이 필요하시면 언제든지 의견을 보내주세요.

감사해요.

구문이 잘못되었습니다. Put.AS subquery아래와 같이 내부 질의에서.

SELECT MAX(avg1), MAX(avg2), ... , MAX(avg50)
    FROM (
        SELECT ID, AVG(field1) AS avg1, AVG(field2) AS avg2, ... , 
    AVG(field50) AS avg50
        FROM table
        GROUP BY ID
    ) AS subquery

언급URL : https://stackoverflow.com/questions/49705458/how-to-find-the-maximum-average-of-all-fields-grouped-by-id-in-sql

반응형