再求一条sql 语句。

ruhong1 2015-08-26 06:26:14
之前按小时统计,有位兄弟解决了。
现在又有更bt的要求了。
按指定的分钟间隔统计。
比如20分钟, 啥整?
...全文
209 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruhong1 2015-08-27
  • 打赏
  • 举报
回复
引用 6 楼 Tiger_Zhao 的回复:
A)整数/整数 是整除。 B)把35变成时间段用前台处理效率高,下面这样写语句就繁琐了
WITH /* 测试数据
table1(序号,a,日期)AS(
    SELECT 1,'x','2011-01-01 11:56' UNION ALL
    SELECT 2,'y','2011-01-01 12:12' UNION ALL
    SELECT 3,'z','2011-01-01 12:33'
),*/
a AS(
    SELECT COUNT(*) 个数,
           (DATEPART(hour,日期)*60+DATEPART(minute,日期))/20 i
      FROM table1
  GROUP BY (DATEPART(hour,日期)*60+DATEPART(minute,日期))/20
)
,b AS (
    SELECT number AS i,
           CONVERT(varchar(5),DATEADD(minute,number*20,0),8)+'-'+
           CONVERT(varchar(5),DATEADD(minute,number*20+19,0),8) 时间段
      FROM master..spt_values
     WHERE type = 'p'
       AND number < 72
)
SELECT a.个数,
       b.时间段
  FROM a
  JOIN b
    ON a.i = b.i
       个数 时间段
----------- -----------
          1 11:40-11:59
          1 12:00-12:19
          1 12:20-12:39
哦,那我还是前台换算吧。
ruhong1 2015-08-26
  • 打赏
  • 举报
回复


/* 测试数据
WITH table1(序号,a,日期)AS(
    SELECT 1,'x','2011-01-01 11:56' UNION ALL
    SELECT 2,'y','2011-01-01 12:12' UNION ALL
    SELECT 3,'z','2011-01-01 12:33'
)*/
    SELECT COUNT(*) 个数,
           DATEPART(hour,日期) 小时
      FROM table1
  GROUP BY DATEPART(hour,日期)
xiaoxiangqing 2015-08-26
  • 打赏
  • 举报
回复
以前的语句是怎么写的
Tiger_Zhao 2015-08-26
  • 打赏
  • 举报
回复
把小时换算成分钟啊,小学生都会。
qq_29845565 2015-08-26
  • 打赏
  • 举报
回复
(DATEPART(hour,日期)*60 小时数乘60是什么意思呀?
Tiger_Zhao 2015-08-26
  • 打赏
  • 举报
回复
A)整数/整数 是整除。
B)把35变成时间段用前台处理效率高,下面这样写语句就繁琐了
WITH /* 测试数据
table1(序号,a,日期)AS(
SELECT 1,'x','2011-01-01 11:56' UNION ALL
SELECT 2,'y','2011-01-01 12:12' UNION ALL
SELECT 3,'z','2011-01-01 12:33'
),*/
a AS(
SELECT COUNT(*) 个数,
(DATEPART(hour,日期)*60+DATEPART(minute,日期))/20 i
FROM table1
GROUP BY (DATEPART(hour,日期)*60+DATEPART(minute,日期))/20
)
,b AS (
SELECT number AS i,
CONVERT(varchar(5),DATEADD(minute,number*20,0),8)+'-'+
CONVERT(varchar(5),DATEADD(minute,number*20+19,0),8) 时间段
FROM master..spt_values
WHERE type = 'p'
AND number < 72
)
SELECT a.个数,
b.时间段
FROM a
JOIN b
ON a.i = b.i

       个数 时间段
----------- -----------
1 11:40-11:59
1 12:00-12:19
1 12:20-12:39
ruhong1 2015-08-26
  • 打赏
  • 举报
回复
还有,他要想这样的结果怎么办。 个数 时间段 ----------- ----------- 1 11:40-11:59 1 12:00-12:19 1 12:20-12:39 如果按20分钟计算间隔的话。
ruhong1 2015-08-26
  • 打赏
  • 举报
回复
引用 3 楼 Tiger_Zhao 的回复:
/* 测试数据
WITH table1(序号,a,日期)AS(
    SELECT 1,'x','2011-01-01 11:56' UNION ALL
    SELECT 2,'y','2011-01-01 12:12' UNION ALL
    SELECT 3,'z','2011-01-01 12:33'
)*/

    SELECT COUNT(*) 个数,
           (DATEPART(hour,日期)*60+DATEPART(minute,日期))/20 二十分钟
      FROM table1
  GROUP BY (DATEPART(hour,日期)*60+DATEPART(minute,日期))/20
       个数    二十分钟
----------- -----------
          1          35
          1          36
          1          37
厉害啊。不过不用考虑小数点后面的数吗?
Tiger_Zhao 2015-08-26
  • 打赏
  • 举报
回复
/* 测试数据
WITH table1(序号,a,日期)AS(
SELECT 1,'x','2011-01-01 11:56' UNION ALL
SELECT 2,'y','2011-01-01 12:12' UNION ALL
SELECT 3,'z','2011-01-01 12:33'
)*/

SELECT COUNT(*) 个数,
(DATEPART(hour,日期)*60+DATEPART(minute,日期))/20 二十分钟
FROM table1
GROUP BY (DATEPART(hour,日期)*60+DATEPART(minute,日期))/20

       个数    二十分钟
----------- -----------
1 35
1 36
1 37

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧