কম্পিউটার টিউটোরিয়াল

MySQL에서 중복 ID 그룹별 최대값 구하기 (GROUP BY + MAX)

동일 ID의 여러 행에서 각 컬럼의 최댓값을 구하려면 GROUP BY ID와 MAX(컬럼)을 사용합니다.

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable1804 (
    -> Id INT,
    -> Marks1 INT,
    -> Marks2 INT,
    -> Marks3 INT
    -> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1804 VALUES(1,56,89,34);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1804 VALUES(1,98,NULL,94);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1804 VALUES(2,34,45,78);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1804 VALUES(2,NULL,67,NULL);
Query OK, 1 row affected (0.00 sec)

데이터 조회

mysql> SELECT * FROM DemoTable1804;
+------+--------+--------+--------+
| Id   | Marks1 | Marks2 | Marks3 |
+------+--------+--------+--------+
|    1 |     56 |     89 |     34 |
|    1 |     98 |   NULL |     94 |
|    2 |     34 |     45 |     78 |
|    2 |   NULL |     67 |   NULL |
+------+--------+--------+--------+
4 rows in set (0.00 sec)

ID별 각 점수 컬럼의 최댓값

mysql> SELECT Id, MAX(Marks1), MAX(Marks2), MAX(Marks3)
    -> FROM DemoTable1804
    -> GROUP BY Id;
+------+-------------+-------------+-------------+
| Id   | MAX(Marks1) | MAX(Marks2) | MAX(Marks3) |
+------+-------------+-------------+-------------+
|    1 |          98 |          89 |          94 |
|    2 |          34 |          67 |          78 |
+------+-------------+-------------+-------------+
2 rows in set (0.00 sec)

특징: MAX()는 NULL을 무시합니다. Id=1의 Marks2: 89 vs NULL → 89. Id=2의 Marks1: 34 vs NULL → 34. MIN(), SUM(), AVG()도 NULL 무시. COUNT(컬럼)도 NULL 제외, COUNT(*)는 NULL 포함.

  1. MySQL-এ GROUP BY এবং MIN() ব্যবহার করে ডুপ্লিকেট আইডির জন্য ন্যূনতম ফ্লোটিং ভ্যালু বের করা

  2. MySQL-এ VARCHAR কলাম থেকে সর্বোচ্চ সংখ্যাগত মান বের করা

  3. MySQL-এ সাবকোয়ারি এবং GROUP BY ব্যবহার করে সর্বোচ্চ কমিউলেটিভ মান বের করা

  4. MySQL-এ কলাম থেকে সর্বোচ্চ মান বের করা