sql - एक ग्रिड क्वेरी में subquery जोड़ना




sqlite sqlite3 grid (2)

इस प्रश्न के बाद, मुझे एक और सवाल है कि मुझे डेटा के सभी नकारात्मक संख्याओं के लिए 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;

जो प्रत्येक ग्रिड स्क्वायर से ऑर्डर कुल की गणना करता है।


Answers

आपकी मूल क्वेरी नीचे दिए गए क्वेरी में बहुत कुछ बदलती नहीं है। फर्क सिर्फ इतना है कि इसमें शामिल होने और 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_y मूल्यों को बड़े करीने से गणना करने देता है।


मुझे पता है कि यह एक पुरानी पोस्ट है, SQL सर्वर में:

select  isnull(town,'TOTAL') Town, count(*) cnt
from    user
group by town WITH ROLLUP

Town         cnt
Copenhagen   58
NewYork      58
Athens       58
TOTAL        174




sql sqlite sqlite3 grid subquery