मैं एक SQL क्वेरी के साथ संघर्ष कर रहा हूँ।

मैं जो कार्य पूरा करना चाहता हूं वह यह गिनना है कि कितने उपयोगकर्ताओं ने 5 दिनों में ऐप का उपयोग किया, कितने उपयोगकर्ताओं ने 4 दिन आदि।

मुझे इस तरह की एक टेबल चाहिए:

days | user_count
---- | ---
   5 | 2
   4 | 2
   2 | 1
   1 | 1

मेरे पास ईवेंट, event_date और user_id के साथ लॉगफाइल है। तो मैं जो पूछने में कामयाब रहा वह यह था:

SELECT 
  user_id,
  COUNT(DISTINCT event_date) AS days
FROM
  mytable
GROUP BY user_id

यह परिणामी तालिका है।

user_id | days
------- | ----
      a | 5
      b | 5
      c | 4
      d | 4
      e | 2
      f | 1

लेकिन मुझे ऊपर दिखाए गए तालिका की आवश्यकता है (दिन, user_count)

प्रश्न: मैं एक क्वेरी के साथ परिणाम कैसे प्राप्त कर सकता हूं?

काश मैं परिणाम लेता और इसे दिनों के अनुसार फिर से समूहित करता। लेकिन यह एक प्रश्न में काम नहीं करता है (कारण मैं संचित कॉलम के साथ ORDER BY का उपयोग नहीं कर सकता)।

मैं Google BigQuery के WebUI का उपयोग कर रहा हूं और ऐसा लगता है कि अस्थायी तालिकाओं को करना आसान नहीं है। तो मैं दो प्रश्नों के संयोजन के बारे में सोच रहा था लेकिन एसक्यूएल में मेरे कौशल सीमित हैं। UNION, WHERE IN या उपश्रेणियों के बारे में पढ़ना, सहसंबद्ध प्रश्नों ने मुझे और आगे नहीं लाया।

किसी भी मदद की सराहना की जाती है :-)

0
stackovermat 3 अगस्त 2017, 20:11

3 जवाब

सबसे बढ़िया उत्तर

प्रश्नों को घोंसला बनाना एक आसान तरीका होगा। (मेमोरी टेबल या इनलाइन व्यू बनाना, हालांकि आप इसे देखना चाहते हैं)

SELECT count(User_ID) cnt, days
FROM (SELECT user_id
           , COUNT(DISTINCT event_date) AS days
      FROM mytable
      GROUP BY user_id) z
GROUP BY days
ORDER BY Days Desc

संदर्भ: क्या BigQuery SubQueries का समर्थन करता है?

मैं यह देखना चाहता हूं कि विश्लेषणात्मक कार्य या दो के साथ ऐसा करने का कोई तरीका है लेकिन अभी तक कोई भाग्य नहीं है।

1
xQbert 3 अगस्त 2017, 20:27

दिनों का चयन करें, mytable समूह से दिनों के अनुसार user_count के रूप में गिनें (अलग (उपयोगकर्ता));

0
guru008 3 अगस्त 2017, 21:02

तालिका समूह@100 बटा 1 से दिनों का चयन करें, सटीक_काउंट_डिस्टिंक्ट (उपयोगकर्ता) उपयोगकर्ता_काउंट के रूप में;

0
dineshachanta 7 अगस्त 2017, 16:31