选择按午夜时间分组的数据

2024-03-26

我有一个像这样的表:

ID       TIMEVALUE
-----    -------------
1        06.07.15 06:43:01,000000000
2        06.07.15 12:17:01,000000000
3        06.07.15 18:21:01,000000000
4        06.07.15 23:56:01,000000000
5        07.07.15 04:11:01,000000000
6        07.07.15 10:47:01,000000000
7        07.07.15 12:32:01,000000000
8        07.07.15 14:47:01,000000000

我想按特殊时间对这些数据进行分组。
我当前的查询如下所示:

SELECT TO_CHAR(TIMEVALUE, 'YYYY\MM\DD'), COUNT(ID), 
  SUM(CASE WHEN TO_CHAR(TIMEVALUE, 'HH24MI') <=700 THEN 1 ELSE 0 END) as morning,
  SUM(CASE WHEN TO_CHAR(TIMEVALUE, 'HH24MI') >700 AND TO_CHAR(TIMEVALUE, 'HH24MI') <1400 THEN 1 ELSE 0 END) as daytime,
  SUM(CASE WHEN TO_CHAR(TIMEVALUE, 'HH24MI') >=1400 THEN 1 ELSE 0 END) as evening FROM Table
WHERE TIMEVALUE >= to_timestamp('05.07.2015','DD.MM.YYYY')
GROUP BY TO_CHAR(TIMEVALUE, 'YYYY\MM\DD')

我得到这个输出

day          overall     morning    daytime    evening 
-----        ---------
2015\07\05   454         0          0          454
2015\07\06   599         113        250        236
2015\07\07   404         139        265        0

这样就可以在同一天进行分组(0-7 点、7-14 点和 14-24 点)
但我现在的问题是:半夜怎么组团?

例如,从第二天的 6 点到 14 点、14 点到 23 点、23 点到 6 点进行计数。

我希望你能理解我的问题。如果有更好的解决方案,欢迎您甚至改进我的上查询。


EDIT: 现在已经测试过了:SQL小提琴 http://sqlfiddle.com/#!4/6a7d8/2

关键就是调整一下group by这样早上 6 点之前的所有内容都会与前一天分组。之后,计数就非常简单了。

SELECT TO_CHAR(CASE WHEN EXTRACT(HOUR FROM timevalue) < 6
                    THEN timevalue - 1
                    ELSE timevalue
                    END, 'YYYY\MM\DD') AS day, 
       COUNT(*) AS overall, 
       SUM(CASE WHEN EXTRACT(HOUR FROM timevalue) >= 6 AND EXTRACT(HOUR FROM timevalue) < 14
                THEN 1 ELSE 0 END) AS morning,
       SUM(CASE WHEN EXTRACT(HOUR FROM timevalue) >= 14 AND EXTRACT(HOUR FROM timevalue) < 23
                THEN 1 ELSE 0 END) AS daytime,
       SUM(CASE WHEN EXTRACT(HOUR FROM timevalue) < 6 OR EXTRACT(HOUR FROM timevalue) >= 23
                THEN 1 ELSE 0 END) AS evening
FROM my_table
WHERE timevalue >= TO_TIMESTAMP('05.07.2015','DD.MM.YYYY')
GROUP BY TO_CHAR(CASE WHEN EXTRACT(HOUR FROM timevalue) < 6
                    THEN timevalue - 1
                    ELSE timevalue
                    END, 'YYYY\MM\DD');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择按午夜时间分组的数据 的相关文章

  • 在 MySQL 中对整数字段运行带引号的数字(字符串)查询时会发生哪些复杂情况

    在 SQL 中 不应引用整数 因为如果引用 它将是一个字符串 但我很好奇如果我这样做会出现什么问题 并发症 例如 SELECT FROM table WHERE id 1 正确的 vs SELECT FROM table WHERE id
  • ora-04091 表正在发生变化-

    我正在使用一个函数来比较表 1 和表 2 中的所有列并返回 Y 或 N 在此基础上 我将更新我的表 1 但是当我运行合并语句时 它显示错误 ora 04091 Table1 正在发生变化 触发器 函数可能看不到它 我怎样才能解决这个问题 C
  • 将 .MDF SQL Server 数据库与 ASP.NET 结合使用与使用 SQL Server

    我目前正在 ASP NET MVC 中编写一个网站 我的数据库 其中还没有任何数据 只有正确的表 使用 SQL Server 2008 我已将其安装在我的开发计算机上 我使用服务器资源管理器从应用程序连接到数据库 然后使用 LINQ to
  • SQL:如何在按部分分组的查询中使用子查询?

    如何在按部分分组的查询中使用子查询 我使用 SQL Server 2008 R2 和 Delphi 2010 我收到此错误 Cannot perform an aggregate function on an expression cont
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • SQL 查询用于计算每个客户的订单数量和总金额

    我有两张桌子Order与列 OrderID OrderDate CID EmployeeID And OrderItem与列 OrderID ItemID Quantity SalePrice 我需要返回客户 ID CID 每个客户的订单数
  • Oracle:如何获取刚刚插入的行的序列号?

    如何获取刚刚插入的行的序列号 插入 返回 declare s2 number begin insert into seqtest2 x values aaa returning seq into s2 dbms output put lin
  • 如何在 Oracle PLSQL 中提交单个事务

    我需要编写一个 PL SQL 过程 在这个过程中 我需要在其自己的事务范围内调用另一个过程 并提交它 无论主事务是否失败或提交 换句话说 我需要类似的东西REQUIRES NEW交易传播 就像是 procedure mainProcedur
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 如何识别拼写不同的相似单词

    我想从数据库中过滤掉重复的客户名称 一位客户可能有多个同名但拼写差异不大的系统条目 这是一个示例 名为 Brook 的客户可能有 3 个系统条目 有了这个变化 布鲁克 贝尔塔 布鲁克 贝尔塔 比鲁克 贝尔塔 假设我们将此名称放入一个数据库列
  • 解析带下划线的 SQL Server 数字文字

    我想知道它为什么有效以及为什么它不返回错误 SELECT 2015 11 Result 11 2015 第二种情况 SELECT 2 1 a a 2 1 检查元数据 SELECT name system type name FROM sys
  • 数字表与递归 CTE 生成一系列数字

    为什么使用数字表比使用递归 CTE 动态生成它们要快得多 在我的机器上 给定一张桌子numbers单列n 主键 包含从1到100000的数字 查询如下 select n from numbers 大约需要 400 毫秒才能完成 使用递归 C
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 我不断收到错误“关系 [TABLE] 不存在”

    我一直在尝试查询数据库中的两个表 在服务器资源管理器中 我可以看到两个表 甚至可以看到其中的列 我们将它们称为 Schema table1 和 Schema table2 其中 Schema 的第一个字母大写 我尝试运行以下查询 selec
  • 循环预定义值

    有没有办法在 oracle 中执行 for every 如下所示 begin for VAR in 1 2 5 loop dbms output put line The value VAR end loop end 我知道你可以这样做 b
  • 如何使用 SQL Server 2008 将行复制到同一个表中

    A 到目前为止我的方式 sqlCommand CommandText INSERT Table1 column1 column2 column3 SELECT column1 column2 column3 FROM Table1 WHER
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么
  • SQL 更新 - 更新选定的行

    我正在使用 SQL Server 2008 我有一个名为MYTABLE有两列 ID STATUS 我想编写一个存储过程来返回其记录STATUS是 0 但是这个存储过程必须更新STATUS返回行数为 1 如何在单个查询中执行此选择和更新操作

随机推荐

  • 部分分支或部分合并或其他方式来帮助我同步点文件?

    我不知道如何使我的要求的标题简短 如果没有意义 抱歉 我在这里解释一下 许多人将他们的点文件放在 bitbucket 或 github 上 以方便以后的安装或配置 在不同的电脑上同步 我做了同样的事情 但是我想做一些特别的事情 我不确定 m
  • 如何在 Angular 6 中单击事件时在 matInput 元素上设置自动焦点?

    与 Google 登录页面类似 我希望在单击事件后自动聚焦于输入元素 我尝试过 ViewChild id 和 document getElementId id 两者都不起作用 它始终为 null 或未定义 我怎样才能实现这个目标
  • jQuery if 语句取决于 px 宽度

    我对 jQuery 很陌生 有人可以告诉我上面的 if 语句是否表达正确吗 如果变量的宽度等于 900px 我基本上希望运行一些东西 我的变量是var brewapp brewapp Thanks if brewapp width 900p
  • 编辑 woo commerce 特色产品小部件的 HTML

    我想修改 woo commerce 特色产品小部件的 HTML 代码 问题是我在模板文件夹 插件文件夹中找不到它 有人知道如何修改 woo commerce 的特色产品小部件吗 这是通过修改内容小部件产品 php模板 位于 woocomme
  • $_SERVER['SERVER_ADDR'] 值得信赖吗?

    我的网站严重依赖 SERVER SERVER ADDR 我可以信任检索到的数据吗 有可能找到空字符串吗 从 php 参考我引用了一些 看来这取决于托管 PHP 的服务器 尤其是 apache IIS http php net manual
  • 我什么时候会在 IntelliJ IDEA 中使用“将目录标记为...”选项?

    我是一个新人 正在寻找如何使用 IntelliJ IDE 的方法 目前我正在使用它在 Scala 中进行编码 在 项目 窗口中右键单击会弹出一个弹出窗口 其中包含 将目录标记为 选项 其中包含以下选项 来源根 测试源根 资源根 测试资源根
  • 在 SQL 字符串中使用 $variable?

    我希望能够从下拉列表中选择一个类别 并根据类别将其添加到与之相等的任何 SQL 表中
  • 大多数人都使用.NET的SqlMembershipProvider、SqlRoleProvider和SqlProfileProvider吗?

    大多数人在开发具有成员资格功能的站点时是否使用 NET 的 SqlMembershipProvider SqlRoleProvider 和 SqlProfileProvider 还是很多人都创建了自己的提供商 甚至完全是自己的会员系统 SQ
  • Swift 使滚动视图内容居中

    当用户当前位置移至屏幕框架之外时 我尝试将滚动视图视图居中并移动框架 目前我有一个 PDF 正在显示用户的当前位置 我正在计算框架和滚动视图的 ZoomScale 以在 PDF 视图上显示当前位置 我已经实现了这个功能 它运行完美 当用户移
  • 从 XML 绑定表达式调用控制器函数

    使用 OpenUI5 SAPUI5 根据文档XML 绑定表达式 https help sap com saphelp nw74 helpdata en da f6852a04b44d118963968a1239d2c0 content ht
  • Hibernate注释或XML配置

    我开始了一个新项目休眠 http en wikipedia org wiki Hibernate 28Java 29 Hibernate 注释是更好的选择还是 Hibernate XML 映射更好 我已经使用 Hibernate 和 XML
  • android 11 上 imageCapture 用例的camerax“未绑定到有效相机”

    我一直收到错误 未绑定到有效相机 当尝试实现 imageCapture 用例时 我正在按照camerax教程在Java中实现该功能here https codelabs developers google com codelabs came
  • 均匀分布图像库

    我有一个图像库 每个图像都有相同的宽度和高度 比如 10px 我希望它们间隔开 以便一行中有 5 个 并且它们在所有边上彼此间隔 5 像素 容器 div 具有 5px 内边距 有多个行 我的问题是 如果我给每个图像留出 5px 的左边距 那
  • 如何在 OS X 上使用键盘触发 VS Code IntelliSense?

    All the docs keep referring https code visualstudio com Docs editor debugging to Space to launch IntelliSense so as to g
  • 如何在 PHP 中调试多个会话?

    我正在开发一个项目 其中应用程序在开发模式下通过网络创建对同一应用程序的 Web 服务请求 以获得虚假数据和更好的开发环境 有时 当我调试时 我发现很难做到这一点 因为当您在同一个 PHP 安装上同时有两个调试会话时 XDebug 似乎不起
  • window.scrollTo 不滚动到提供的 id

    我正在处理一个文档文件 当单击 id about 的锚点时 我想滚动到 id projectpage 的所需部分 a class nav link page scroll href About Me a section 我尝试使用 a ab
  • 如何在发布过程中跳过文件夹删除?

    我无法做到这一点 因此从 Visual Studio 发布不会删除服务器网站上的 App Data 文件夹 但我也希望它继续删除所有文件 该文件夹除外 以保持目录 干净 我已经在 csproj pubxml 中尝试过这个 以及它的更改 有一
  • iOS 4 构建 SDK

    我昨天安装了 iOS 4 SDK 我之前安装过 3 1 2 3 1 3 和 3 2 SDK 自从安装了 iOS 4 SDK 以来 我在 Xcode 中只有 3 2 和 4 0 可用 当我加载针对旧版本 例如 3 1 2 的 Xcode 项目
  • Actionscript 3 数学不一致

    我正在尝试在 Flex actionscript 3 中构建一个计算器 但使用 Math 类得到了一些奇怪的结果 trace 1 4 4 should be 1 but it is 0 9999999999999999 trace 1 5
  • 选择按午夜时间分组的数据

    我有一个像这样的表 ID TIMEVALUE 1 06 07 15 06 43 01 000000000 2 06 07 15 12 17 01 000000000 3 06 07 15 18 21 01 000000000 4 06 07