mysql 去重累加
时间: 2023-10-09 09:14:13 浏览: 184
mysql去重累加可以使用以下SQL语句:
```sql
SELECT SUM(c)
FROM (
SELECT COUNT(DISTINCT column_name) c
FROM table_name
WHERE conditions
UNION ALL
SELECT COUNT(DISTINCT column_name) c
FROM table_name
WHERE conditions
) AS temp;
```
其中,`column_name`是需要去重累加的列名,`table_name`是需要查询的表名,`conditions`是查询条件。
相关问题
统计每个学生的选课门数和总成绩,并按选课门数降序排列mysql
在MySQL中,你可以通过使用GROUP BY、COUNT函数、SUM函数以及ORDER BY子句来统计每个学生的选课门数(课程数量)和总成绩,并按照选课门数降序排列。假设你有一个名为`students_courses`的表,包含字段如`student_id`(学生ID)、`course_id`(课程ID)和`score`(成绩)。下面是一个SQL查询示例:
```sql
SELECT
student_id,
COUNT(DISTINCT course_id) AS total_courses,
SUM(score) AS total_score
FROM
students_courses
GROUP BY
student_id
ORDER BY
total_courses DESC;
```
这个查询做了以下几件事:
1. `SELECT student_id`: 选择每个学生的ID。
2. `COUNT(DISTINCT course_id)`: 计算每个学生选修的不同课程数量(去重)。
3. `SUM(score)`: 累加每个学生所有课程的成绩。
4. `GROUP BY student_id`: 按照学生ID分组,以便为每个学生计算门数和总分。
5. `ORDER BY total_courses DESC`: 将结果按照总课程数从多到少排序。
阅读全文