SQL语句实现水仙花数查询教程

版权申诉
0 下载量 21 浏览量 更新于2024-10-09 收藏 390KB RAR 举报
资源摘要信息: "本资源包含了与SQL水仙花问题相关的所有信息,该问题通常用作编程或数据库学习中的一个练习案例,特别是对于初学者来说,能够帮助他们加深对SQL语言的理解和应用能力。本资源主要通过SQL语句来实现寻找水仙花数的功能,即找到所有的三位数,它们的每个位上的数字的立方和等于其本身。比如153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。此资源主要面向初学者,旨在通过实践提升其SQL编程技能。" 知识点详解: 1. SQL基本概念: - SQL(Structured Query Language)是一种专门用于与关系数据库进行交互的编程语言。它包含了数据查询、数据操作(如增加、删除、更新)、数据定义(创建和修改数据库结构)和数据控制等多方面的功能。 2. SQL语句基础: - SELECT:用于从数据库中选取数据。 - FROM:指定查询数据所在的表。 - WHERE:用来过滤记录,设置查询条件。 - GROUP BY:用来结合聚合函数,根据一个或多个列对结果集进行分组。 - HAVING:与GROUP BY结合使用,对分组之后的结果集进行过滤。 - ORDER BY:用于对查询结果进行排序。 3. 水仙花数概念: - 水仙花数(Narcissistic number),也被称为自恋数、自幂数、阿姆斯壮数,是一个n位数,其各位数字的n次幂之和等于该数本身。例如,153是一个三位的水仙花数,因为1^3 + 5^3 + 3^3 = 153。 4. SQL实现水仙花数: - 在SQL中,寻找水仙花数实际上是一个循环计算和比较的过程。由于SQL并不是为循环计算设计的,通常需要利用SQL的内置函数或者子查询、连接查询等高级特性来实现。 5. SQL编程技巧: - 使用子查询来生成每位数字的立方和。 - 使用WITH语句(公用表表达式CTE)构建临时的数据结果集,便于后续的引用。 - 利用联结(JOIN)或临时表来模拟循环计算。 6. 学习资源的重要性: - 对于初学者来说,通过具体问题的解决来学习SQL可以更快地掌握语言的用法,而实现水仙花数的查找是一个很好的入门案例。 7. 编程思维训练: - 解决水仙花数问题不仅仅需要熟悉SQL语句,还需要有一定的算法思维和数学基础。这要求学习者能够将问题抽象化,并使用逻辑和数学方法来找到解决方案。 综上所述,本资源通过SQL水仙花问题的解决,为初学者提供了一个很好的学习SQL的实践场景。通过对问题的深入分析和SQL语句的编写练习,初学者不仅能够加深对SQL语言的理解,还能够锻炼自己的编程思维和问题解决能力。这是一份宝贵的IT学习资料,适用于数据库入门学习者和希望提高SQL编程能力的用户。

select distinct a.EMPI_ID, a.PATIENT_NO, a.MR_NO, a.PAT_NAME, a.PAT_SEX, a.PAT_AGE, a.PAT_PHONE_NO, b.DIAG_RESULT, a.ADMIT_DATE, a.DISCHARGE_DEPT_NAME, a.ATTEND_DR from BASIC_INFORMATION a join PA_DIAG b on a.MZZY_SERIES_NO=b.MZZY_SERIES_NO join EXAM_DESC_RESULT_CODE c on a.MZZY_SERIES_NO=c.MZZY_SERIES_NO join DRUG_INFO d on a.MZZY_SERIES_NO=d.MZZY_SERIES_NO join EMR_CONTENT e on a.MZZY_SERIES_NO=e.MZZY_SERIES_NO JOIN TEST_INFO A17 ON a.MZZY_SERIES_NO = A17.MZZY_SERIES_NO where a.PAT_AGE>='18' and (to_char(a.ADMIT_DATE,'YYYY-MM-DD') >= '2021-01-01') AND (b.DIAG_RESULT LIKE '%鼻咽癌%' or b.DIAG_RESULT LIKE '%鼻咽恶性肿瘤%' or b.DIAG_CODE LIKE '%C11/900%') and d.DRUG_NAME not in (select DRUG_NAME FROM DRUG_INFO WHERE DRUG_NAME like '卡培他滨') and b.DIAG_RESULT NOT IN (SELECT DIAG_RESULT FROM PA_DIAG WHERE DIAG_RESULT LIKE '%HIV阳性%') and b.DIAG_RESULT NOT IN (SELECT DIAG_RESULT FROM PA_DIAG WHERE DIAG_RESULT LIKE '%充血性心力衰竭%') AND to_char(( A17.TEST_DETAIL_ITEM_NAME = '中性粒细胞' AND A17.TEST_RESULT >= 1.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '血小板' AND A17.TEST_RESULT >= 100 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '血红蛋白' AND A17.TEST_RESULT >= 9 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '丙氨酸氨基转移酶' AND A17.TEST_RESULT <= 2.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '天门冬氨酸氨基转移酶' AND A17.TEST_RESULT <= 2.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '肌酐清除率' AND A17.TEST_RESULT > 51 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '肌酐' AND A17.TEST_RESULT <=1.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = '凝血酶原时间' AND A17.TEST_RESULT <= 1.5 ))语句哪里有问题

2023-06-07 上传
2023-06-07 上传

class AbstractGreedyAndPrune(): def __init__(self, aoi: AoI, uavs_tours: dict, max_rounds: int, debug: bool = True): self.aoi = aoi self.max_rounds = max_rounds self.debug = debug self.graph = aoi.graph self.nnodes = self.aoi.n_targets self.uavs = list(uavs_tours.keys()) self.nuavs = len(self.uavs) self.uavs_tours = {i: uavs_tours[self.uavs[i]] for i in range(self.nuavs)} self.__check_depots() self.reachable_points = self.__reachable_points() def __pruning(self, mr_solution: MultiRoundSolution) -> MultiRoundSolution: return utility.pruning_multiroundsolution(mr_solution) def solution(self) -> MultiRoundSolution: mrs_builder = MultiRoundSolutionBuilder(self.aoi) for uav in self.uavs: mrs_builder.add_drone(uav) residual_ntours_to_assign = {i : self.max_rounds for i in range(self.nuavs)} tour_to_assign = self.max_rounds * self.nuavs visited_points = set() while not self.greedy_stop_condition(visited_points, tour_to_assign): itd_uav, ind_tour = self.local_optimal_choice(visited_points, residual_ntours_to_assign) residual_ntours_to_assign[itd_uav] -= 1 tour_to_assign -= 1 opt_tour = self.uavs_tours[itd_uav][ind_tour] visited_points |= set(opt_tour.targets_indexes) # update visited points mrs_builder.append_tour(self.uavs[itd_uav], opt_tour) return self.__pruning(mrs_builder.build()) class CumulativeGreedyCoverage(AbstractGreedyAndPrune): choice_dict = {} for ind_uav in range(self.nuavs): uav_residual_rounds = residual_ntours_to_assign[ind_uav] if uav_residual_rounds > 0: uav_tours = self.uavs_tours[ind_uav] for ind_tour in range(len(uav_tours)): tour = uav_tours[ind_tour] quality_tour = self.evaluate_tour(tour, uav_residual_rounds, visited_points) choice_dict[quality_tour] = (ind_uav, ind_tour) best_value = max(choice_dict, key=int) return choice_dict[best_value] def evaluate_tour(self, tour : Tour, round_count : int, visited_points : set): new_points = (set(tour.targets_indexes) - visited_points) return round_count * len(new_points) 如何改写上述程序,使其能返回所有已经探索过的目标点visited_points的数量,请用代码表示

2023-06-10 上传