有一个我正在苦苦挣扎的SQL表。尝试了几种方法。
基本上,我有按客户名称列出的订单列表。数百万条记录(这是数据库的完整导出;我知道有更好的方法,但这是我能够获取数据的唯一格式)
格式如下:
CustomerName Date Amount
ABC 2018-01-08 11:05 PM $0.15
ABC 2018-01-15 12:45 PM $5.11
DEF 2017-03-03 5:28 PM $15.89
GHI 2015-05-09 9:42 AM $0.82
ABC 2018-09-16 9:30 AM $9.15
JKL 2018-03-09 10:14 PM $5.26
MNO 2018-06-12 2:09 AM $0.92
JKL 2018-11-30 3:05 AM $62.77
DEF 2017-03-11 4:19 PM $10.62
基本上,我想获取每个唯一客户的列表(按NAME),然后列出第一个订单的日期,最后一个订单的日期以及他们与我们共花费的总金额
示例:
Customer First Order Last Order Total
ABC 2018-01-08 2018-09-16 $14.41
DEF 2017-03-03 2017-03-11 $26.51
等
因此,我能够通过手动将数据导出到Excel,然后使用vlookups来做到这一点,但是由于存在数百万行数据,所以很难,因此我必须基本上分别查找每个“列”(第一个,最后一个,总和等)
编辑:我意识到为什么这么难。我是SQL的新手,但显然日期不是正确的字段类型。因此我可以看到日期,但无法对其进行排序或汇总。
我最终不得不导出表,然后重新导入它,为日期选择正确的字段类型。
答案 0 :(得分:2)
很简单。
SELECT MIN(date) as First Date, MAX(date) as Last Order, SUM(amount) as Total
From table
GROUP BY Customer
答案 1 :(得分:2)
使用如下所示的聚合函数
select customer, min(date) as fisrt_order,max(date) last_order,
sum(amount) as Total from table_name
group by customer