SQL ORACLE - 查询,显示的清单,有多少人是在50
我是新(非常)在Oracle SQL世界SQL ORACLE - 查询,显示的清单,有多少人是在50
我有列名为艺术家表:id_artist,这位演出,born_date,death_date ,也有一个叫国下面列的表:id_country,COUNTRY_NAME
我必须写一个查询,显示国家的名单,有多少艺术家在50各有一个,像这样:
国家| ARTIST OVER 50
JAPAN ................ 35
EEUU ................. 47
法国............ 85
我知道了年龄,但我没有时间去做其余的查询。我试图用clausule count做一些事情,但是我只能得到错误信息,比如'缺少表达'或者与群组有关的问题。
这是我
SELECT COUNTRY_NAME, COUNT (round(MONTHS_BETWEEN(DEATH_DATE,BORN_DATE)/12)),
FROM ARTISTS A JOIN COUNTRY C ON A.COUNTRY=C.ID_COUNTRY
HAVING COUNT (round(MONTHS_BETWEEN(DEATH_DATE,BORN_DATE)/12))>50
GROUP BY COUNTRY_NAME
我感到非常非常失落试图做到这一点查询,正如我之前说的,我做的唯一的事情就是要知道每一个艺术家的年龄查询
round(MONTHS_BETWEEN(DEATH_DATE,BORN_DATE)/12)
我希望你们中的一些能帮助我。
感谢
使用GROUP BY
前HAVING
条款
试试这个:
SELECT COUNTRY_NAME, COUNT (round(MONTHS_BETWEEN(DEATH_DATE,BORN_DATE)/12))
FROM ARTISTS A JOIN COUNTRY C ON A.COUNTRY=C.ID_COUNTRY
GROUP BY COUNTRY_NAME
HAVING COUNT (round(MONTHS_BETWEEN(DEATH_DATE,BORN_DATE)/12))>50
嗨尝试,感谢您回复我尝试这样做,我仍然有u__u ORA-00936缺少expresion消息:缺少表达00936. 00000 - “失踪表达” –
SELECT COUNTRY_NAME, COUNT (round(MONTHS_BETWEEN(DEATH_DATE,BORN_DATE)/12))
FROM ARTISTS A JOIN COUNTRY C ON A.COUNTRY=C.ID_COUNTRY
GROUP BY COUNTRY_NAME
HAVING COUNT (round(MONTHS_BETWEEN(DEATH_DATE,BORN_DATE)/12))>50
总有被一种你过得好可用记录后过滤记录使用前组。 ...查询执行计划会是这样,它会首先通过应用组得到的记录,然后才申请having子句来过滤那些结果。
您好,感谢您的答复我尝试这一点,我仍然有u__u ORA-00936缺少expresion消息:缺少表达 00936. 00000 - “失踪表达” –
之前还删除逗号** **从所建议 –
GROUP BY在HAVING之前。 – jarlh
在'FROM'之前删除','。在'拥有'之前放置'group by'。 – JSapkota
是现在@ ZunairFatimi的评论 –