【问题标题】:Adding subquery to a grid query将子查询添加到网格查询
【发布时间】:2017-01-17 08:04:28
【问题描述】:

this question 开始,我有另一个查询,我需要从数据中的所有负数中减去一个值 10。遗憾的是,我只是不确定如何实现与上一个问题中给出的相同的子查询。

有问题的查询是

SELECT 10 * (c.customer_x / 10), 10 * (c.customer_y / 10),
COUNT(*) as num_orders,
SUM(o.order_total)
FROM t_customer c 
JOIN t_order o
ON c.customer_id = o.customer_id
GROUP BY c.customer_x / 10, c.customer_y / 10
ORDER BY SUM(o.order_total) DESC;

计算每个方格的订单总数。

【问题讨论】:

    标签: sql sqlite grid subquery


    【解决方案1】:

    您的原始查询在下面的查询中没有太大变化。唯一的区别是新的连接和添加到SELECT 列表中的另一个术语:

    SELECT 10 * (c.customer_x / 10) AS col1,
           10 * (c.customer_y / 10) AS col2,
           COUNT(*) AS num_orders,
           SUM(o.order_total) AS order_total_sum
    FROM
    (
        SELECT customer_id,
               CASE WHEN customer_x < 0 THEN customer_x - 10 ELSE customer_x END AS customer_x,
               CASE WHEN customer_y < 0 THEN customer_y - 10 ELSE customer_y END AS customer_y
        FROM t_customer
    ) c
    INNER JOIN t_order o
        ON c.customer_id = o.customer_id
    GROUP BY c.customer_x / 10,
             c.customer_y / 10
    ORDER BY SUM(o.order_total) DESC
    

    请注意,您可以在不使用我使用过的子查询的情况下解决这个问题。然而,子查询使它更具可读性,并让我们巧妙地计算调整后的customer_xcustomer_y 值。

    【讨论】:

    • 我收到错误Error: no such column: t.customer_x?
    • @DaveC 重新加载页面,我更改了别名以匹配您在上面的问题中使用的别名。
    • 完美。我认为是 SUM 线让我感到困惑。我一直把它放在错误的地方。
    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    相关资源
    最近更新 更多