SQL队列查询输出

SQL队列查询输出,sql,Sql,这是一个示例查询,我没有与这些值关联的数据,但我只需要知道此请求的输出将是什么类型的图表/信息: SELECT cohorts.cohortyear, YEAR(orders.time) AS purchaseyear, SUM(orders.amount) AS amount FROM orders, (SELECT id AS customer_id, YEAR(created) AS cohortyear FROM customers) AS cohorts WHERE

这是一个示例查询,我没有与这些值关联的数据,但我只需要知道此请求的输出将是什么类型的图表/信息:

SELECT 
 cohorts.cohortyear, 
 YEAR(orders.time) AS purchaseyear, 
 SUM(orders.amount) AS amount 

FROM orders, 
(SELECT id AS customer_id, YEAR(created) AS cohortyear FROM customers) AS cohorts 
WHERE orders.customer_id = cohorts.customer_id
GROUP BY cohortyear, purchaseyear;

我不确定我是否理解这个问题。通过查看
SELECT
子句中的投影,我猜您的输出列将如下所示:


cohortyear(整数)| purchaseyear(整数)| amount(一些数字)

如果使用显式的
join
语法,查询将编写得更好,更容易理解:

SELECT co.cohortyear, YEAR(o.time) AS purchaseyear, SUM(o.amount) AS amount 
FROM orders o join
     (SELECT id AS customer_id, YEAR(created) AS cohortyear
      FROM customers cu
     ) co 
     on o.customer_id = co.customer_id
GROUP BY co.cohortyear, purchaseyear;
它是根据
客户
记录创建的年份(假设
创建的
听起来像什么),将客户分配到相似性组。因此,同年创建的所有客户都属于同一组。然后,它计算出每年在这一天或之后花费的金额。如果您运行该查询,那么输出将是不言自明的。比如:

CohortYear   PurchaseYear     Amount
  2014           2014         $1000
  2013           2014         $2000
  2013           2013         $3000
  . . .

第一行表示,对于2014年开始的客户,他们在2014年花费了1000美元。相比之下,2013年开始的客户在2014年花费了2000美元。这一群体在2013年花费了3000美元。然而,这些比较不是很好,因为它没有考虑到客户的数量。但那是另一件事。

情况是,我收到了这个查询,需要了解它将显示的信息(见解)以及为什么它有价值。这有帮助!