SQLZOO习题答案 The nobel table can be used to practice more SUM and COUNT functions./zh

这篇博客通过SQLZOO的习题,详细解答了如何利用SUM和COUNT函数来查询诺贝尔奖的颁发次数、获奖者信息、各奖项的历年分布等,帮助读者深化SQL操作技巧。
摘要由CSDN通过智能技术生成

1.找出總共有多少個獎頒發了。

SELECT COUNT(winner) FROM nobel

2.列出每一個獎項(subject), 只列一次

select distinct(subject) from nobel

3.找出物理獎的總頒發次數。

select count(subject)
    from  nobel 
    where subject ='physics'

4.對每一個獎項(Subject),列出頒發數目

    
好的,我可以回答这个问题。以下是使用SPARQL从SPARQL数据集生成新图的Python代码: ```python from rdflib import Graph, Namespace, Literal from rdflib.namespace import RDF, FOAF, XSD from SPARQLWrapper import SPARQLWrapper, JSON # 定义命名空间 nobel = Namespace("http://data.nobelprize.org/terms/") dbpedia = Namespace("http://dbpedia.org/resource/") # 查询SPARQL数据集 sparql = SPARQLWrapper("http://data.nobelprize.org/sparql") sparql.setQuery(""" PREFIX nobel: <http://data.nobelprize.org/terms/> PREFIX foaf: <http://xmlns.com/foaf/.1/> PREFIX dbpedia: <http://dbpedia.org/resource/> SELECT ?name ?birthdate ?birthplace ?category ?gender WHERE { ?laureate a nobel:Laureate ; foaf:name ?name ; nobel:birthDate ?birthdate ; nobel:birthPlace ?birthplace ; nobel:category ?category ; foaf:gender ?gender . FILTER regex(?birthplace, "^http://dbpedia.org/resource/United_Kingdom") } """) sparql.setReturnFormat(JSON) results = sparql.query().convert() # 创建新图 g = Graph() g.bind("nobel", nobel) g.bind("foaf", FOAF) g.bind("dbpedia", dbpedia) for result in results["results"]["bindings"]: # 添加节点和属性 laureate_uri = nobel[result["name"]["value"].replace(" ", "_")] g.add((laureate_uri, RDF.type, nobel["Laureate"])) g.add((laureate_uri, FOAF.name, Literal(result["name"]["value"], lang="en"))) g.add((laureate_uri, nobel["birthDate"], Literal(result["birthdate"]["value"], datatype=XSD.date))) g.add((laureate_uri, nobel["category"], Literal(result["category"]["value"], lang="en"))) g.add((laureate_uri, FOAF.gender, Literal(result["gender"]["value"], lang="en"))) # 添加外部链接 dbpedia_uri = dbpedia[result["birthplace"]["value"].replace("http://dbpedia.org/resource/", "")] g.add((laureate_uri, nobel["birthPlace"], dbpedia_uri)) g.add((dbpedia_uri, RDF.type, FOAF.Place)) g.add((dbpedia_uri, FOAF.name, Literal(result["birthplace"]["value"], lang="en"))) # 保存为Turtle格式 g.serialize(destination="laureate-details.ttl", format="turtle") ``` 这段代码将从Nobel Prize SPARQL数据集中查询出生在英国的诺贝尔奖得主的姓名、出生日期、出生城市、诺贝尔奖类别和性别。然后,它将创建一个新的图形,其中包含这些信息,并将其保存为Turtle格式的文件“laureate-details.ttl”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值