zeile - sql unterabfrage mit mehreren ergebnissen



Hinzufügen von Unterabfragen zu einer Rasterabfrage (1)

Ihre ursprüngliche Abfrage ändert nicht viel in der folgenden Abfrage. Der einzige Unterschied ist der neue Join und ein weiterer Term, der der SELECT Liste hinzugefügt wurde:

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

Beachten Sie, dass Sie dies ohne die Verwendung der Unterabfrage lösen könnten , die ich verwendet habe. Die Unterabfrage macht es jedoch deutlich lesbarer und lässt uns die angepassten Werte customer_x und customer_y sauber berechnen.

Nach dieser Frage habe ich eine weitere Abfrage, die ich für alle negativen Zahlen in den Daten einen Wert von 10 subtrahieren muss. Leider bin ich mir nicht sicher, wie ich dieselbe Unterabfrage wie in der vorherigen Frage implementieren soll.

Die fragliche Abfrage ist

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;

berechnet die Reihenfolge der Summen aus jedem Rasterquadrat.





subquery