首页 > 解决方案 > SQL - 如何对特定日期模式的交易进行分组?

问题描述

我有一个包含交易数据的表,并且想要计算每个 transaction_date 的记录数。日期格式如下所示:2018-11-12T01:07:36.000+0000

我试过这个查询,但它没有返回任何东西。我的查询可能有什么问题?

我希望输出看起来像transaction_datenumber_of_transactions

SELECT 
transaction_date, COUNT(*)
FROM main.transactions 
WHERE transaction_date LIKE 2018-11-30
GROUP BY 
transaction_date
ORDER BY COUNT(*) DESC;

UPD:还可以按日期和日期的每个小时(从 00 到 23)分组吗?

标签: sqlpostgresqlgroup-by

解决方案


修剪时间部分以获取日期:

SELECT 
transaction_date::date, COUNT(*) xact_count
FROM main.transactions 
WHERE transaction_date::date = '2018-11-30'::date
GROUP BY 
transaction_date::date
ORDER BY 2 DESC;

并为日期戳使用相等,而不是字符串函数“LIKE”

我在下面看到您关于每小时分组的问题。

SELECT 
date_trunc('hour',transaction_date), COUNT(*) xact_count
FROM main.transactions 
GROUP BY 
date_trunc('hour', transaction_date)
ORDER BY 2 DESC;

推荐阅读