mysql - 在一个查询中计算 mysql 中按 user_id 分组的多个表的不同总数

标签 mysql sql

我想从 courses_takenquiz_attempts 表中计算 user_id,但我的查询给我带来了错误的数字。

SELECT 
    u.id,
    u.email,
    u.user,
    u.joined,
    MAX(qa.last_attempt_time) as last_attempt_time, 
    COUNT(qa.user_id) total_quiz, 
    COUNT(ct.user_id) total_courses 
FROM users u

LEFT JOIN courses_taken ct
ON u.id = ct.user_id

LEFT JOIN quiz_attempt qa
ON u.id = qa.user_id AND qa.attempt_mode=1

GROUP BY u.id
ORDER BY total_courses DESC

表结构

用户

id, email, user, joined

quiz_attempt

id、user_id、last_attempt_time、attempt_mode 等

courses_taken

id,user_id,course_id,taken_on 等


在这里,我试图让所有用户了解他们的测验尝试总数和参加的类(class)总数。但是我的查询为测验尝试和所修类(class)返回了相同的数字。

最佳答案

您可以做的是在一个列上使用 COUNT DISTINCT,该列随您尝试计算的值而变化,即:

...
COUNT(DISTINCT qa.id) total_quiz, 
COUNT(DISTINCT ct.course_id) total_courses 
...

SqlFiddle here

关于mysql - 在一个查询中计算 mysql 中按 user_id 分组的多个表的不同总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339812/

相关文章:

mysql - 数据库中未创建外键字段

php - MySQL 日期时间在 PHP 上回显

mysql - 如何在sql中仅将单列从表复制到另一个(同一数据库)而不使用内连接

mysql - 如何合并sql查询之间的列表?

mysql - SQL SELECT 查询列中的多个值和范围

sql - Postgres : function accepting a hashmap or similar type as argument

php - mySQL PHP 打印多行结果

php - 2 个不同的值存储在数据库的一列下

c# - 将更多表列添加到列表框显示查询

对 VBA 数组的 SQL 查询