-3
我有三个表,我想要这个: 对于每个技能,开始于2016年,并且是至少两个培训包的一部分,并且分数介于12和17之间,列出技能ID,其类别,其水平,作为其一部分的训练包数量及其平均得分。SQL中的聚合函数
我写了下面的代码,但当我选择avg和sum时出现问题。
select SKILLNUM , SKCATEGORY , SKLEVEL , count(TPID)
from (trainingpack t join Is_part_of i on t.TPID=i.TPID join skill s on i.SKILLNUM=s.SKILLNUM)
where STARTINGDATE like '%2016' and COMPLDATE is not null and score between 12 and 17
and (SKILLNUM) in (
select is_part_of.SKILLNUM
from is_part_of
group by SKILLNUM
having count(TPID) >=2);
而且我想这个代码
select SKILL.SKILLNUM , SKILL.SKCATEGORY , SKILL.SKLEVEL ,count(IS_PART_OF.TPID),sum(IS_PART_OF.SCORE)
from SKILL,TRAININGPACK,IS_PART_OF
where TRAININGPACK.STARTINGDATE like '%2016' and IS_PART_OF.COMPLDATE is not null and IS_PART_OF.score between 12 and 17
and IS_PART_OF.TPID=TRAININGPACK.TPID and IS_PART_OF.SKILLNUM=SKILL.SKILLNUM and (is_part_of.SKILLNUM) in (
select is_part_of.SKILLNUM
from is_part_of
group by SKILLNUM
having count(TPID) >=2);
显示示例表 – DCR
首先找出您正在使用的RDBMS。然后参见http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查询 – Strawberry
您可能需要在group by子句中添加其他列。所以GROUP BY SkillNum,SkCategory,SkLevel –