作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在数据库中有一个表,其中一列包含日期,另一列包含分数。基本上,我想做的是在给定的一周内获得最好的分数。
周可以从任何给定的一天开始(例如,从周五到周四),并且由用户定义。
这是我到目前为止所拥有的:
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
关于sql - 如何在 SQLite 中使用条件(如 if 语句等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969954/
我是一名优秀的程序员,十分优秀!