Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एसक्यूएल परिणाम पंक्ति 1 को पंक्ति 2 से, पंक्ति 2 को पंक्ति 3 से कैसे घटाएं?

आप शायद MySQL के उपयोगकर्ता परिभाषित चर , और फिर आप शायद कुछ ऐसा करना चाहते हैं:

SET @prev := NULL;
SELECT
    DATE(created_at),
    price - COALESCE(@prev, price) AS price_change,
    name,
    (@prev := price) AS price FROM (
        SELECT * FROM items ORDER BY DATE(created_at)
    ) t1
GROUP BY
    name, price, DATE(created_at)
HAVING name = 'Ibuprofen'
ORDER BY DATE(created_at);
Query OK, 0 rows affected (0.00 sec)

मैंने सिंटैक्स की जाँच नहीं की है, इसलिए यह थोड़ा हटकर हो सकता है लेकिन यह सामान्य विचार है। ध्यान दें कि मैंने तारीख जोड़ दी है ताकि आप इसके द्वारा आदेश दे सकें, अन्यथा परिणाम व्यर्थ हो सकते हैं।

संपादित करें:

बस इसे मेरी मशीन पर चलाया:

SET @prev := NULL;
SELECT
    DATE(created_at),
    price - COALESCE(@prev, price) AS price_change,
    name,
    (@prev := price) AS price FROM (
        SELECT * FROM items ORDER BY DATE(created_at)
    ) t1
GROUP BY
    name, price, DATE(created_at)
HAVING name = 'Ibuprofen'
ORDER BY DATE(created_at);

Query OK, 0 rows affected (0.00 sec)

+------------------+--------------+-----------+-------+
| DATE(created_at) | price_change | name      | price |
+------------------+--------------+-----------+-------+
| 2018-12-10       |            0 | Ibuprofen |   110 |
| 2018-12-13       |          -10 | Ibuprofen |   100 |
| 2018-12-13       |           20 | Ibuprofen |   120 |
+------------------+--------------+-----------+-------+

3 rows in set, 1 warning (0.00 sec)

SELECT * FROM items;
+----+-------+----------------+---------------------+
| id | price | name           | created_at          |
+----+-------+----------------+---------------------+
|  8 |   100 | Ibuprofen      | 2018-12-13 12:52:35 |
|  9 |   110 | Ibuprofen      | 2018-12-10 12:12:12 |
| 10 |   120 | Ibuprofen      | 2018-12-13 12:52:35 |
| 11 |  1000 | Something else | 2018-12-13 13:01:19 |
+----+-------+----------------+---------------------+

4 rows in set (0.00 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रूबी से एक MySQL संग्रहीत प्रक्रिया को कॉल करना संभव है?

  2. MySQL:टाइपकास्टिंग NULL से 0

  3. किसी दिए गए उपयोगकर्ता के लिए नवीनतम संदेश लौटाने वाली आंतरिक क्वेरी कैसे लिखें?

  4. Mysql में किसी ईवेंट को कैसे बदलें जो पहले से ही बनाया गया है

  5. क्या मैं अनुमान लगा सकता हूं कि मेरी Zend Framework अनुक्रमणिका कितनी बड़ी होगी? (और कुछ त्वरित क्यू:एस)