通过csv文件提供的数据库表内容: links。csv的格式: movies。csv格式,一个movie可以有多种风格(genres),通过分隔: ratings。csv: 用户给movie打得分: tags。csv:movie的标签 练习一: 列出四张表的总记录数: ,count(1)MOVIELENS。public。aa。movielens。hdb::data。LINKS,count(1)MOVIELENS。public。aa。movielens。hdb::data。MOVIES,count(1)MOVIELENS。public。aa。movielens。hdb::data。RATINGS,count(1)MOVIELENS。public。aa。movielens。hdb::data。TAGS; 执行结果: 练习2:计算总共9125部电影,一共包含多少艺术类别? DOBEGINDECLAREgenreArrayNVARCHAR(255)ARRAY;DECLAREtmpNVARCHAR(255);DECLAREidxINTEGER;DECLAREsepNVARCHAR(1):;DECLARECURSORcurFORSELECTDISTINCTGENRESFROMMOVIELENS。public。aa。movielens。hdb::data。MOVIES;DECLAREgenresNVARCHAR(255):;idx:1;FORcurrowAScur()DOSELECTcurrow。GENRESINTOgenresFROMDUMMY;tmp::WHILELOCATE(:tmp,:sep)0DOgenreArray〔:idx〕:SUBSTRBEFORE(:tmp,:sep);tmp:SUBSTRAFTER(:tmp,:sep);idx::idx1;ENDWHILE;genreArray〔:idx〕::ENDFOR;genreListUNNEST(:genreArray)AS(GENRE);SELECTGENREFROM:genreListGROUPBYGENRE;END; 执行结果,总共包含18种: 练习3:计算每种艺术类别总共包含多少部电影: DOBEGINDECLAREgenreArrayNVARCHAR(255)ARRAY;DECLAREtmpNVARCHAR(255);DECLAREidxINTEGER;DECLAREsepNVARCHAR(1):;DECLARECURSORcurFORSELECTDISTINCTGENRESFROMMOVIELENS。public。aa。movielens。hdb::data。MOVIES;DECLAREgenresNVARCHAR(255):;idx:1;FORcurrowAScur()DOSELECTcurrow。GENRESINTOgenresFROMDUMMY;tmp::WHILELOCATE(:tmp,:sep)0DOgenreArray〔:idx〕:SUBSTRBEFORE(:tmp,:sep);tmp:SUBSTRAFTER(:tmp,:sep);idx::idx1;ENDWHILE;genreArray〔:idx〕::ENDFOR;genreListUNNEST(:genreArray)AS(GENRE);SELECTGENRE,count(1)FROM:genreListGROUPBYGENRE;END; 练习4:列出每部电影包含的风格数目: SELECTMOVIEID,TITLE,OCCURRENCESREGEXPR(〔〕INGENRES)1GENRECOUNT,GENRESFROMMOVIELENS。public。aa。movielens。hdb::data。MOVIESORDERBYGENRECOUNTASC; 练习5:罗列出每部电影的风格分布情况 SELECTGENRECOUNT,COUNT(1)FROM(SELECTOCCURRENCESREGEXPR(〔〕INGENRES)1GENRECOUNTFROMMOVIELENS。public。aa。movielens。hdb::data。MOVIES)GROUPBYGENRECOUNTORDERBYGENRECOUNT; 比如至少拥有1个风格的电影,有2793部,2个风格的电影有3039部,等等。 练习6:计算movie的rating分布情况 SELECTDISTINCTMIN(RATINGCOUNT)OVER()ASMIN,MAX(RATINGCOUNT)OVER()ASMAX,AVG(RATINGCOUNT)OVER()ASAVG,SUM(RATINGCOUNT)OVER()ASSUM,MEDIAN(RATINGCOUNT)OVER()ASMEDIAN,STDDEV(RATINGCOUNT)OVER()ASSTDDEV,COUNT()OVER()ASCATEGORYCOUNTFROM(SELECTMOVIEID,COUNT(1)RATINGCOUNTFROMMOVIELENS。public。aa。movielens。hdb::data。RATINGSGROUPBYMOVIEID)GROUPBYRATINGCOUNT; 明细情况: SELECTRATINGCOUNT,COUNT(1)MOVIECOUNTFROM(SELECTMOVIEID,COUNT(1)RATINGCOUNTFROMMOVIELENS。public。aa。movielens。hdb::data。RATINGSGROUPBYMOVIEID)GROUPBYRATINGCOUNTORDERBYRATINGCOUNT 比如有397部电影的用户投票数为5票 练习7:统计用户投票情况 SELECTRATINGCOUNT,COUNT(1)USERCOUNTFROM(SELECTUSERID,COUNT(1)RATINGCOUNTFROMMOVIELENS。public。aa。movielens。hdb::data。RATINGSGROUPBYUSERID)GROUPBYRATINGCOUNTORDERBY1DESC; 有一位用户投了2391票,一位用户投了1868票: 练习8:统计用户投票得分情况 SELECTRATING,COUNT(1)RATINGCOUNTFROMMOVIELENS。public。aa。movielens。hdb::data。RATINGSGROUPBYRATINGORDERBY1DESC; 有15095份用户投票,打的分数是5分 要获取更多Jerry的原创文章,请关注公众号汪子熙: