MySQL COIST DISTINCT


144

मैं कल अपने सीपी में अलग-अलग यात्राओं की संख्या इकट्ठा करने की कोशिश कर रहा हूं, फिर उन्हें गिनें।

SELECT
    DISTINCT `user_id` as user,
    `site_id` as site,
    `ts` as time
FROM
    `cp_visits`
WHERE
    ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)

किसी कारण से यह एक ही साइट आईडी के साथ कई परिणाम खींच रहा है .... मैं केवल अलग साइट_प cp लॉगिन कैसे खींचूं और गिनूं?

जवाबों:


299
 Select
     Count(Distinct user_id) As countUsers
   , Count(site_id) As countVisits
   , site_id As site
 From cp_visits
 Where ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)
 Group By site_id

17
मैं SQL से प्यार करता हूँ क्योंकि आपको "मैं अलग-अलग उपयोगकर्ता आईडी कैसे गिनूँ" जैसे प्रश्न मिलते हैं और इसका उत्तर सिर्फ " Count(Distinct user_id)" है
Tim

23

संपूर्ण

SELECT
       COUNT(DISTINCT `site_id`) as distinct_sites
  FROM `cp_visits`
 WHERE ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)

या प्रति साइट

  SELECT
         `site_id` as site,
         COUNT(DISTINCT `user_id`) as distinct_users_per_site
    FROM `cp_visits`
   WHERE ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)
GROUP BY `site_id`

timeपरिणाम में कॉलम होने का कोई मतलब नहीं है - जब से आप पंक्तियों को एकत्र कर रहे हैं time, तब तक एक विशेष दिखाना अप्रासंगिक है, जब तक कि यह आपके पास नहीं है minया maxआप बाद में हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.