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

मैं ग्रुप बाय क्लॉज पर उपनामों का उपयोग कैसे कर सकता हूं?

सुनिश्चित नहीं है कि आप क्या करने की कोशिश कर रहे हैं। लेकिन आप range_day . के बिना अपनी क्वेरी को सबक्वेरी में लपेट सकते हैं ग्रुप बाय क्लॉज में। फिर बाहरी क्वेरी में अपने ग्रुप बाय क्लॉज का उपयोग करें।

SELECT  SUM(score) score,
    type,
    context, -- WARNING! Not listed in group by clause
    post_id,
    table_code,
    comment_id,
    MIN(seen) seen,
    MAX(d_t) d_t,
    range_day
FROM (
    SELECT  SUM(score) score,
        MAX(id) as id,
        type,
        context, -- WARNING! Not listed in group by clause
        post_id,
        e.table_code,
        comment_id,
        MIN(seen) seen,
        MAX(date_time) d_t,
        (CASE   WHEN FROM_UNIXTIME(MAX(date_time)) >= CURDATE() THEN 'today'
            WHEN FROM_UNIXTIME(MAX(date_time)) >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 'yesterday'
            WHEN FROM_UNIXTIME(MAX(date_time)) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN 'in last week'
            ELSE 'in last month'
        END) as range_day
    FROM `events` e
    WHERE e.id IN ($ids)
    GROUP BY type, post_id, e.table_code, comment_id
) sub
GROUP BY type, post_id, table_code, comment_id, range_day
ORDER BY seen, MAX(d_t) desc, MAX(id) desc

हालांकि - आप context . का चयन करें बिना एग्रीगेशन के जो ग्रुप बाय क्लॉज में सूचीबद्ध नहीं है। इस प्रकार आपको समूह से कुछ "यादृच्छिक" मान मिलेगा। सख्त मोड में क्वेरी विफल हो जाएगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस डिजाइन में n:m और 1:n का अर्थ

  2. mysql टाइमस्टैम्प कॉलम

  3. MySQL विचारों का उपयोग करना

  4. InnoDB बनाम MyISAM क्वेरी समय सम्मिलित करें

  5. क्या आप सबक्वायरी इंडेक्स कर सकते हैं?