当前位置: 首页 > 面试题库 >

SQL按天分组(带计数)

程项禹
2023-03-14
问题内容

我在SQL Server中有一个日志表,看起来像这样:

CREATE TABLE [dbo].[RefundProcessLog](
 [LogId] [bigint] IDENTITY(1,1) NOT NULL,
 [LogDate] [datetime] NOT NULL,
 [LogType] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
 [RefundId] [int] NULL,
 [RefundTypeId] [smallint] NULL,
 [LogMessage] [varchar](1000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
 [LoggedBy] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
 CONSTRAINT [PK_RefundProcessLog] PRIMARY KEY CLUSTERED 
(
 [LogId] ASC
) ON [PRIMARY]
) ON [PRIMARY]

GO

我想要的是一个结果列表,该列表表示每天处理了多少种不同的退款,并抛出了所有NULL。

我需要编写什么SQL才能产生这些结果?


问题答案:

我喜欢(MS SQL)中的这种方法:

SELECT 
  Convert(char(8), LogDate, 112),
  count(distinct RefundId)
FROM RefundProcessing
GROUP BY Convert(char(8), LogDate, 112)


 类似资料:
  • 问题内容: 我有以下几点: http://sqlfiddle.com/#!6/226ae/1 我现在尝试为一年中的每个星期添加一行,并相应地过滤联系人。CONTACTS有一个datetime列。新表将如下所示: 我认为需要使用DATEADD,但是在如何开始更改查询方面我迷茫了。 我确实知道MySQL具有GROUP BY WEEK命令,但我认为SQL没有等效的命令。做到这一点的最佳方法是什么? 问题

  • 问题内容: 我正在尝试按DAY对产品进行分组,但是date_created是datetime字段。 返回: 我想要: 编辑: 数据库后端MYSQL 问题答案: 受此问题启发,请尝试针对MySQL

  • 问题内容: 我从这样的数据库中提取了数据(为简单起见,将其简化),我想添加一个称为“百分比”的列。 先感谢您 问题答案: 内部选择得到s的和。

  • 问题内容: 我有一个具有此架构的表 我正在尝试使查询工作显示每个月的总数。到目前为止,我已经尝试过DateDiff和嵌套选择,但都没有给我想要的东西。我认为这是最接近的: 但是当我应该获取值时,我只会得到空值。我想念什么吗? 问题答案: 您也可以尝试:

  • 问题内容: 我正在尝试返回一些在滚动12个月内分散的结果,例如: 如何在日期范围内分散结果,并在第一列中填充月份名称? 在MSSQL中,它将类似于: 但这是针对Oracle数据库的,因此DATEPART和DateTime不可用。 我的问题表大致为: 问题答案: 使用: 您还可以使用:

  • 问题内容: 对于此表: 我需要将具有相同顺序的组相加,以产生此结果。 如何在SQL Server中做到这一点? 注意:该列中的值是连续的。 问题答案: 根据我在您的问题中添加的标签,这是一个空白和孤岛的问题。 效果最好的解决方案可能是 如果值不能保证如所述连续,那么您将需要使用 而是在CTE定义中。 SQL小提琴