SQL嵌套的select sum返回错误的整数

时间:2015-04-01 12:48:37

标签: mysql sql sum

我有以下select语句:

   SELECT 
    T.name,
    C.name as competence_name,
    THC.competence_level_id as requiredLevel,
    (SELECT SUM(UHC.competence_level_id) FROM user_has_competence UHC INNER JOIN user U ON U.id = UHC.user_id WHERE competence_id = C.id AND U.title_id = T.id GROUP BY T.id) as current_level,
    (SELECT 
            ROUND(SUM(UHC.competence_level_id)/ COUNT(UHC.user_id)) 
        FROM
            user_has_competence UHC
        JOIN user U ON U.id = UHC.user_id
        WHERE
            competence_id = C.id
                AND U.title_id = T.id GROUP BY T.id) - THC.competence_level_id as gap,
C.id
FROM
    title_has_competence THC
        JOIN
    title T ON T.id = THC.title_id
        JOIN
    competence C ON C.id = THC.competence_id

返回以下结果:

    'Head of IT', 'Office', '7', '16', '1', '524'
'Head of IT', 'Empatisk', '2', '5', '1', '527'
'Head of IT', 'Målrettet', '5', '12', '1', '529'
'Head of IT', 'Udadvendt', '10', NULL, NULL, '525'
'Webudvikler', 'Office', '2', '3', '1', '524'
'Webudvikler', 'Outlook', '3', '4', '1', '526'
'Webudvikler', 'Målrettet', '6', '10', '4', '529'
'Webudvikler', 'Back-end', '9', '9', '0', '534'
'Webudvikler', 'Infosoft', '10', '5', '-5', '532'

但结果无效:

在第一行中,您将看到当前级别总和= 16这应该是9(6 + 3)

差距也不正确,因为差距应为9 / 2 = 4.5 - 7 = -2.5

所以我的问题是我做错了什么?为什么我的SUM()函数返回的方式很多。

另请注意,COUNT()会返回正确的值= 2

表格

title_has_competence

 id    title_id competence_id competence_level_id
'82', '165', '527', '2'
'85', '166', '524', '2'
'86', '166', '526', '3'
'83', '165', '529', '5'
'87', '166', '529', '6'
'81', '165', '524', '7'
'88', '166', '534', '9'
'84', '165', '525', '10'
'89', '166', '532', '10'

User_has_competence

 user_id, competence_id, competence_level_id, progression
'1', '524', '6', '0'
'1', '527', '4', '0'
'1', '529', '3', '0'
'2', '524', '10', '0'
'2', '527', '1', '0'
'2', '529', '9', '0'
'3', '524', '3', '0'
'3', '526', '4', '0'
'3', '529', '10', '0'
'3', '532', '5', '0'
'3', '534', '9', '0'

标题

 id,   name       organization_id
'165', 'Head of IT', '1'
'166', 'Webudvikler', '1'

用户

id, username, password, title_id,
1   **      , **       ,  165
2   **      , **      ,   165
3   **      , **     ,    166

0 个答案:

没有答案