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

MYSQL कई पंक्तियों के साथ कई उपश्रेणियों से परिणाम विभाजित करता है

यहाँ एक तरीका है जिससे आप निम्नलिखित क्वेरी द्वारा पूरी चीज़ को पूरा कर सकते हैं:

SELECT 
(dividendTable.messages / divisorTable.messages) AS result
FROM
(
    SELECT 
    firstTable.messages,
    @rn1 := @rn1 + 1 AS row_number
    FROM 
    (
        SELECT
            COUNT(channel) AS messages
        FROM Chats
        WHERE   message LIKE '%word%'
        GROUP BY    UNIX_TIMESTAMP(time) DIV 3600
    ) FirstTable, (SELECT @rn1 := 0) var1
) AS dividendTable
INNER JOIN
(   
    SELECT 
    secondTable.messages,
    @rn2 := @rn2 + 1 AS row_number
    FROM
    (
        SELECT 
            COUNT(channel) AS messages 
        FROM Chats 
        GROUP BY UNIX_TIMESTAMP(time) DIV 3600
    ) secondTable, (SELECT @rn2 := 0) var2
) AS divisorTable
ON dividendTable.row_number = divisorTable.row_number;

नोट:

यदि आप चाहते हैं कि परिणाम दशमलव बिंदु के बाद 2 अंकों तक हो तो क्वेरी की पहली पंक्ति के रूप में निम्नलिखित का उपयोग करें:

SELECT
ROUND((dividendTable.messages / divisorTable.messages),2) AS result

यहां डेमो करें

सावधानी: आपने अपनी क्वेरी में किसी ORDER BY का उपयोग नहीं किया है। आपको यादृच्छिक व्यवहार मिल सकता है।




  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 टेक्स्ट को फ़ील्ड में बदलें php

  2. Xampp MySQL प्रारंभ नहीं हो रहा है - MySQL सेवा प्रारंभ करने का प्रयास कर रहा है...

  3. एसक्यूएल जॉइन में डुप्लिकेट रिकॉर्ड

  4. PHP डेटाबेस डेटा नहीं बचाएगा

  5. Drupal 6 में प्रत्येक परिभाषित टैक्सोनॉमी टर्म के लिए नवीनतम नोड का चयन करें