我有这个问题,我一直在努力,我找到的解决方案是每个Pecheur(渔夫)获得AVERAGE结果,是的,这有点可怕,这是一个学校项目。我基本上需要每个渔民的名字和地址,每个渔民在每份合同(CONTRAT)上至少收取两项费用(FRAIS),并且在2000年至2002年期间每年平均需要2次捕鱼(贵重)。必要的表列在from和JOIN中,我的问题是,我可以使用HAVING AVG(x)虽然x未列在Select也不在group by中,但只出现在FROM部分的表中。请注意,我没有真正的数据库来测试查询。
SELECT pecheur.NOM as nom_Pecheur,
pecheur.ADRESSE as adresse
FROM TP1_PECHEUR as pecheur
INNER JOIN TP1_CONTRAT as contrat on pecheur.ID_PECHEUR=contrat.ID_PECHEUR
INNER JOIN TP1_FRAIS_CONTRAT as frais_contrat on contrat.ID_CONTRAT=frais_contrat.ID_CONTRAT
INNER JOIN TP1_FRAIS as frais on frais_contrat.ID_FRAIS=frais.ID_FRAIS
INNER JOIN TP1_DECLARATION_PRISE as declaration_prise on pecheur.ID_PECHEUR=declaration_prise.ID_PECHEUR
INNER JOIN TP1_PRISE as prise on declaration_prise.ID_DECLARATION_PRISE=prise.ID_DECLARATION_PRISE
WHERE frais_contrat.ID IN ( SELECT TP1_FRAIS_CONTRAT.ID, COUNT(*) as NB_FRAIS
FROM TP1_FRAIS_CONTRAT
GROUP BY TP1_FRAIS_CONTRAT.ID
HAVING NB_FRAIS >= 2 )
AND declaration_prise.DATE_DECLARATION BETWEEN '01-01-2000' AND '31-12-2002'
GROUP BY nom_Pecheur
HAVING AVG(prise.NOMBRE_POISSON) > 2;
答案 0 :(得分:5)
...我的问题是,我可以使用HAVING AVG(x)虽然x未列入 选择也不在组中......
简短的回答是'是'。
SELECT
ColB,
ColC
FROM Testing
GROUP BY ColB, ColC
HAVING AVG(ColA) > 4;