gpt4 book ai didi

sql - 如何在 SQLite 中使用条件(如 if 语句等)

转载 作者:行者123 更新时间:2023-12-03 04:18:39 24 4
gpt4 key购买 nike

我在数据库中有一个表,其中一列包含日期,另一列包含分数。基本上,我想做的是在给定的一周内获得最好的分数。

周可以从任何给定的一天开始(例如,从周五到周四),并且由用户定义。

这是我到目前为止所拥有的:

SELECT MAX(Series), DATE(DATE(Date, 'weekday 0'), '-7 days') dateStartOfWeek FROM SeriesScores
WHERE Season = '2010-2011'
AND dateStartOfWeek = '2010-08-29'
GROUP BY DateStartOfWeek

其中Series是包含分数的列,Date是(错误地)命名的实际日期。

此查询的问题在于它适用于除了一周应该开始的那一天之外的每一天。

例如:2010-08-29 是星期日,在本例中,我试图查找给定周的星期日是哪一天。我的函数适用于该周的每一天,除了 2010-08-29(星期日),因为它尝试查找第二天是星期日(在本例中是星期日)。为了弥补这一点,我返回 7 天以获得正确的星期日,这会为已经正确的星期日创建错误,因为这个不需要返回 7 天,否则就休息一周。

我想我可以使用 Java 轻松解决这个问题,但我想看看如何使用 SQL 来解决这个问题。

我的解决方案(我什至不知道是否可以做到)是检查 date 和 dateStartOfWeek 是否相同。如果是,请勿从该日期减去 7 天。如果不是,请像我在示例中所做的那样。不过,我不知道如何在 SQL 中使用这样的条件,这就是我需要帮助的地方。

提前非常感谢!

最佳答案

我认为您需要使用 CASE 运算符 - 请参阅 http://sqlite.awardspace.info/syntax/sqlitepg09.htm

编辑 - 尝试:

SELECT MAX(Series), CASE WHEN STRFTIME ( '%w', Date ) = 0 THEN DATE(Date, 'weekday 0') ELSE DATE(DATE(Date, 'weekday 0'), '-7 days') END AS dateStartOfWeek FROM SeriesScores
WHERE Season = '2010-2011'
AND dateStartOfWeek = '2010-08-29'
GROUP BY DateStartOfWeek

参见http://www.sqlite.org/lang_datefunc.html

关于sql - 如何在 SQLite 中使用条件(如 if 语句等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com