একাধিক কলামে DISTINCT গণনা করা হচ্ছে


212

এর মতো কোয়েরি করার কি আরও ভাল উপায় আছে:

SELECT COUNT(*) 
FROM (SELECT DISTINCT DocumentId, DocumentSessionId
      FROM DocumentOutputItems) AS internalQuery

আমার এই টেবিল থেকে স্বতন্ত্র আইটেমের সংখ্যা গণনা করতে হবে তবে স্বতন্ত্র দুটি কলামের বেশি।

আমার ক্যোয়ারীটি ঠিকঠাক কাজ করে তবে আমি ভাবছিলাম যে আমি মাত্র একটি ক্যোয়ারী ব্যবহার করে চূড়ান্ত ফলাফলটি পেতে পারি (উপ-কোয়েরি ব্যবহার না করে)


IordanTanev, মার্ক ব্র্যাকেট, আরসি - উত্তরের জন্য ধন্যবাদ, এটি একটি দুর্দান্ত চেষ্টা ছিল, তবে এসওতে পোস্ট দেওয়ার আগে আপনার কী করা উচিত তা পরীক্ষা করা উচিত। আপনার প্রদত্ত প্রশ্নগুলি আমার প্রশ্নের সাথে সমান নয়। আপনি সহজেই দেখতে পান যে আমার কাছে সর্বদা একটি স্কেলারের ফলাফল থাকে তবে আপনার ক্যোয়ারিতে একাধিক সারি ফিরে আসে।
নভিটজকি

উত্তরগুলির মধ্যে একটি থেকে আপনার স্পষ্টকামী মন্তব্য অন্তর্ভুক্ত করতে সবেমাত্র প্রশ্নটি আপডেট করেছেন
জেফ


এটা একটা ভালো প্রশ্ন। আমি ভাবছিলাম যে এটি করার কোনও সহজ উপায় ছিল কিনা
অনুপম

উত্তর:


73

আপনি যদি পারফরম্যান্স উন্নত করার চেষ্টা করছেন, আপনি দুটি কলামের একটি হ্যাশ বা গাaten় মানের উপর স্থির গণিত কলাম তৈরি করার চেষ্টা করতে পারেন।

এটি স্থির হয়ে গেলে, কলামটি নির্ধারিত হয় এবং আপনি "বুদ্ধিমান" ডাটাবেস সেটিংস ব্যবহার করেন, এটি সূচিবদ্ধ হতে পারে এবং / অথবা এটিতে পরিসংখ্যান তৈরি করা যেতে পারে।

আমি বিশ্বাস করি যে গণিত কলামের একটি পৃথক গণনা আপনার প্রশ্নের সাথে সমান হবে।


4
দুর্দান্ত পরামর্শ! আমি যত বেশি পড়ি, ততই আমি উপলব্ধি করছি যে এসকিউএল সিনট্যাক্স এবং ফাংশনগুলি সম্পর্কে কম জানা এবং খাঁটি যুক্তি প্রয়োগ করার বিষয়ে আরও কম .. আমি আশা করি আমার 2 টি upvotes ছিল!
তুমচাদিত্য

খুব ভাল পরামর্শ। এটি আমাকে এ থেকে অপ্রয়োজনীয় কোড লিখতে এড়িয়ে গেছে।
অব্রজিৎ রায়

1
এর অর্থ কী এবং এটি কীভাবে করা যায় সে সম্পর্কে আরও জানতে আপনি দয়া করে একটি উদাহরণ বা কোড নমুনা যুক্ত করবেন?
জায়েকি

52

সম্পাদনা করুন: কম-নির্ভরযোগ্য চেকসাম-কেবলমাত্র কোয়েরি থেকে পরিবর্তিত হয়ে আমি এটি করার একটি উপায় আবিষ্কার করেছি (এসকিউএল সার্ভার 2005-এ) যা আমার পক্ষে বেশ ভালভাবে কাজ করে এবং আমি যতগুলি কলাম প্রয়োজন তেমন ব্যবহার করতে পারি (এগুলিতে যুক্ত করে) CHECKSUM () ফাংশন)। REVERSE () ফাংশনটি স্বতন্ত্রভাবে আরও নির্ভরযোগ্য করে তোলার জন্য ইনটগুলিকে ভারচারে পরিণত করে

SELECT COUNT(DISTINCT (CHECKSUM(DocumentId,DocumentSessionId)) + CHECKSUM(REVERSE(DocumentId),REVERSE(DocumentSessionId)) )
FROM DocumentOutPutItems

1
+1 দুর্দান্ত এক, নিখুঁতভাবে কাজ করে (যখন আপনার চেকসাম চালু করার জন্য সঠিক কলামের প্রকারগুলি থাকে ...;)
IT

8
চেকসাম () এর মতো হ্যাশগুলির সাথে, খুব কম সম্ভাবনা রয়েছে যে একই হ্যাশ বিভিন্ন ইনপুটগুলির জন্য ফেরত আসবে যাতে গণনাটি খুব সামান্য বন্ধ থাকে। হ্যাশবাইটস () একটি আরও ছোট সুযোগ তবে এখনও শূন্য নয়। যদি এই দুটি আইডিটি ইন্টার এর (32 বি) হয় তবে একটি "লসলেস হ্যাশ" তাদের আইডি 1 << 32 + আইডি 2 এর মতো একটি বড়সড় (64 বি) এর সাথে সংযুক্ত করতে পারে।
ক্রোকসেক

1
এমনকি সুযোগটি খুব কম নয়, বিশেষত যখন আপনি কলামগুলি একত্রিত করতে শুরু করেন (যা এটি বোঝাতে চেয়েছিল)। আমি এই পদ্ধতির বিষয়ে আগ্রহী ছিলাম এবং একটি বিশেষ ক্ষেত্রে চেকসামটি 10% ছোট একটি গণনা সহ শেষ হয়েছিল। যদি আপনি এটি আরও দীর্ঘ মনে করেন, চেকসাম কেবল একটি ইনট রিটার্ন দেয়, সুতরাং আপনি যদি একটি পুরো বিগিন্ট পরিসীমা চেকসাম করতে চান তবে আপনি আসলে তুলনায় প্রায় 2 বিলিয়ন গুণ ছোট একটি স্বতন্ত্র গণনাটি শেষ করবেন। -1
pvolders

সদৃশ হওয়ার সুযোগটি সরিয়ে দিতে "REVERSE" এর ব্যবহার অন্তর্ভুক্ত করার জন্য ক্যোয়ারী আপডেট করেছে
জয়টাই

4
আমরা কি চেকসাম এড়াতে পারি - আমরা কি কেবল দুটি মান এক সাথে মিলিয়ে দিতে পারি? আমি মনে করি যে ঝুঁকিগুলি একই জিনিস হিসাবে বিবেচনা করছে: ('সে', 'শিল্প') == 'শুনুন', 'টি')। তবে আমি মনে করি @ এপিসি প্রস্তাব হিসাবে একটি সীমানার দিয়ে সমাধান করা যেতে পারে (কিছু মান যে কোনও কলামে প্রদর্শিত হবে না), তাই 'তিনি | শিল্প'! = 'শুনুন কাছে?
রেড মটর

31

আপনার বিদ্যমান ক্যোয়ারী সম্পর্কে এটি কী যা আপনি পছন্দ করেন না? আপনি যদি উদ্বিগ্ন হন যে DISTINCTদুটি কলাম জুড়ে কেবল অনন্য অনুমতিগুলি ফেরত আসে না কেন এটি চেষ্টা করবেন না?

এটি অবশ্যই ওরাকলে যেমন আশা করতে পারে তেমন কাজ করে।

SQL> select distinct deptno, job from emp
  2  order by deptno, job
  3  /

    DEPTNO JOB
---------- ---------
        10 CLERK
        10 MANAGER
        10 PRESIDENT
        20 ANALYST
        20 CLERK
        20 MANAGER
        30 CLERK
        30 MANAGER
        30 SALESMAN

9 rows selected.


SQL> select count(*) from (
  2  select distinct deptno, job from emp
  3  )
  4  /

  COUNT(*)
----------
         9

SQL>

সম্পাদন করা

আমি বিশ্লেষণ সহ একটি অন্ধ গলিতে নামলাম তবে উত্তরটি হতাশাজনকভাবে সুস্পষ্ট ছিল ...

SQL> select count(distinct concat(deptno,job)) from emp
  2  /

COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
                                9

SQL>

সম্পাদনা 2

নিম্নলিখিত প্রদত্ত উপসংহারযুক্ত সমাধানটি প্রদান করা ভুল গণনা করবে:

col1  col2
----  ----
A     AA
AA    A

সুতরাং আমরা একটি বিভাজক অন্তর্ভুক্ত ...

select col1 + '*' + col2 from t23
/

স্পষ্টতই নির্বাচিত বিভাজক অবশ্যই একটি অক্ষর বা অক্ষরের সেট হতে হবে, যা কখনই কোনও কলামে উপস্থিত হতে পারে না।


আমার কাছ থেকে +1 আপনার উত্তরের জন্য ধন্যবাদ. আমার জিজ্ঞাসাটি ঠিকঠাক কাজ করে তবে আমি ভাবছিলাম যে আমি মাত্র একটি ক্যোয়ারী (সাবকিউরি ব্যবহার না করে) চূড়ান্ত ফলাফলটি পেতে পারি
নভিটজকি

19

একটি একক ক্যোয়ারী হিসাবে চালানোর জন্য, কলামগুলি সংলগ্ন করুন, তারপরে সংক্ষিপ্ত স্ট্রিংয়ের উদাহরণগুলির পৃথক গণনা পান।

SELECT count(DISTINCT concat(DocumentId, DocumentSessionId)) FROM DocumentOutputItems;

মাইএসকিউএল তে আপনি নিম্নরূপ পদক্ষেপ ছাড়াই একই জিনিসটি করতে পারেন:

SELECT count(DISTINCT DocumentId, DocumentSessionId) FROM DocumentOutputItems;

এই বৈশিষ্ট্যটি মাইএসকিউএল ডকুমেন্টেশনে উল্লেখ করা হয়েছে:

http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_count-distinct


এটি একটি এসকিউএল সার্ভারের প্রশ্ন ছিল এবং আপনার পোস্ট করা দুটি বিকল্পই ইতিমধ্যে এই প্রশ্নের নীচের উত্তরগুলিতে উল্লিখিত হয়েছে: stackoverflow.com/a/1471444/4955425 এবং stackoverflow.com/a/1471713/4955425
স্যস্তান

1
এফডব্লিউআইডাব্লু, এটি পোস্টগ্র্রেএসকিউএলএ প্রায় কাজ করে; শুধু অতিরিক্ত বন্ধনী প্রয়োজন:SELECT COUNT(DISTINCT (DocumentId, DocumentSessionId)) FROM DocumentOutputItems;
আইজোসেফ

14

যেমন কিছু সম্পর্কে:

গণনা নির্বাচন করুন (*)
থেকে
  (গণনা (*) সিএনটি নির্বাচন করুন
   ডকুমেন্টআউটপুট আইটেম থেকে
   ডকুমেন্টআইড, ডকুমেন্টসেশনআইডি) দ্বারা গোষ্ঠী টি 1

সম্ভবত আপনি ইতিমধ্যে যেমন করছেন ঠিক তেমনি এটি DISTINCT এড়ায়।


আমার পরীক্ষাগুলিতে (SET SHOWPLAN_ALL ON) ব্যবহার করে, এর একই কার্যকরকরণ পরিকল্পনা এবং হুবহু টোটাল সাবট্রিকোস্ট
কেএম ছিল।

1
মূল ক্যোয়ারির জটিলতার উপর নির্ভর করে এর সমাধান করা GROUP BYকাঙ্ক্ষিত আউটপুট অর্জনের জন্য ক্যোয়ারী রূপান্তরকে আরও কয়েকটি অতিরিক্ত চ্যালেঞ্জের প্রচলন করতে পারে (উদাহরণস্বরূপ যখন মূল প্রশ্নের সাথে ইতিমধ্যে GROUP BYবা HAVINGক্লজ ছিল ...)
লুকাশ ইডার

8

এখানে সাবলেট ছাড়া একটি সংক্ষিপ্ত সংস্করণ রয়েছে:

SELECT COUNT(DISTINCT DocumentId, DocumentSessionId) FROM DocumentOutputItems

এটি মাইএসকিউএলে দুর্দান্ত কাজ করে এবং আমি মনে করি যে অপ্টিমাইজারটির এটি বোঝার জন্য আরও সহজ সময় রয়েছে।

সম্পাদনা: আপাতদৃষ্টিতে আমি এমএসএসকিউএল এবং মাইএসকিউএল সম্পর্কে ভুল লিখেছি - এর জন্য দুঃখিত, তবে এটি যেভাবেই সহায়তা করে।


6
এসকিউএল সার্ভারে আপনি পাবেন: এমএসজি 102, স্তর 15, রাজ্য 1, লাইন 1 ',' এর নিকটে ভুল সিনট্যাক্স।
কেএম

এই আমি ভাবছিলাম। আমি সম্ভব হলে এমএসএসকিউএলে একই জিনিস করতে চাই।
নভিটজকি

এসকিউএল সার্ভারে কমিল নওইকি, আপনার কেবলমাত্র একটি COUNT টি ()) এর একটি ক্ষেত্র থাকতে পারে, আমার উত্তরে আমি দেখাই যে আপনি দুটি ক্ষেত্রকে একটিতে সংযুক্ত করতে পারেন এবং এই পদ্ধতির চেষ্টা করতে পারেন। যাইহোক, আমি কেবল মূলটির সাথে আটকে থাকব কারণ ক্যোয়ারী পরিকল্পনাগুলি একই রকম হবে।
কেএম

1
দয়া করে @ জয়টাই উত্তরটি দেখুন। ইহা যাদুর মত কাজ করে। count ( distinct CHECKSUM ([Field1], [Field2])
কাস্টোডিও

5

অনেকগুলি (সর্বাধিক?) এসকিউএল ডাটাবেসগুলি মানগুলির মতো টিপলগুলির সাথে কাজ করতে পারে তবে আপনি ঠিক এটি করতে পারেন: SELECT COUNT(DISTINCT (DocumentId, DocumentSessionId)) FROM DocumentOutputItems; আপনার ডাটাবেসটি যদি এটি সমর্থন না করে তবে এটি @ একল-উমুত-টিউরারের চেকসাম বা অন্যান্য স্কেলার ফাংশনের পরামর্শ অনুসারে সিমুলেটেড করা যায় যা ভাল স্বতন্ত্রতা সরবরাহ করে যেমন COUNT(DISTINCT CONCAT(DocumentId, ':', DocumentSessionId))

টিপলস সম্পর্কিত একটি সম্পর্কিত INপ্রশ্নগুলি যেমন সম্পাদন করে : SELECT * FROM DocumentOutputItems WHERE (DocumentId, DocumentSessionId) in (('a', '1'), ('b', '2'));


কি ডাটাবেস সমর্থন select count(distinct(a, b))? : ডি
ভাইটেনিস বিভেইনিস

@ ভাইটেনস বিভেইনিস আমি জানি পোস্টগ্রাইএসকিউএল কি করে - কোন সংস্করণ থেকে তা নিশ্চিত নয়।
কর্মকাজে

3

আপনার ক্যোয়ারিতে কোনও ভুল নেই, তবে আপনি এটিও এভাবে করতে পারেন:

WITH internalQuery (Amount)
AS
(
    SELECT (0)
      FROM DocumentOutputItems
  GROUP BY DocumentId, DocumentSessionId
)
SELECT COUNT(*) AS NumberOfDistinctRows
  FROM internalQuery

3

আশা করি এই কাজটি আমি প্রাইম ভিস্তার উপর লিখছি

SELECT COUNT(*) 
FROM DocumentOutputItems 
GROUP BY DocumentId, DocumentSessionId

7
এটির চূড়ান্ত উত্তর দেওয়ার জন্য আপনাকে এটিকে অন্য একটি নির্বাচন COUNT (*) FROM (...) এ মোড়াতে হবে। মূলত এই উত্তরটি আপনাকে গণনা করতে চান এমন স্বতন্ত্র মান তালিকাভুক্ত করার জন্য আপনাকে অন্য উপায় দিচ্ছে। এটি আপনার আসল সমাধানের চেয়ে ভাল আর কিছু নয়।
ডেভ কোস্টা

ধন্যবাদ ডেভ আমি জানি আপনি আমার ক্ষেত্রে স্বতন্ত্র পরিবর্তে গ্রুপ ব্যবহার করতে পারেন। আমি ভাবছিলাম যে আপনি কেবল একটি ক্যোয়ারী ব্যবহার করে চূড়ান্ত ফলাফল পেয়েছেন কিনা। আমি মনে করি অসম্ভব তবে আমি ভুল হতে পারি।
নভিটজকি

3

আমি এই পদ্ধতির ব্যবহার করেছি এবং এটি আমার পক্ষে কাজ করেছে।

SELECT COUNT(DISTINCT DocumentID || DocumentSessionId) 
FROM  DocumentOutputItems

আমার ক্ষেত্রে, এটি সঠিক ফলাফল সরবরাহ করে।


এটি আপনাকে দুটি কলামের সাথে পৃথক মানগুলির গণনা দেয় না। কমপক্ষে মাইএসকিউএল 5.8 এ নেই।
আনোয়ার শায়খ

এই প্রশ্নটি এসকিউএল সার্ভারকে ট্যাগ করা হয়েছে, এবং এটি এসকিউএল সার্ভার সিনট্যাক্স নয়
ট্যাব অলেম্যান

2

আপনার যদি "DISTINCT" তে কেবল একটি ক্ষেত্র থাকে তবে আপনি ব্যবহার করতে পারেন:

SELECT COUNT(DISTINCT DocumentId) 
FROM DocumentOutputItems

এবং সেটটি SHOWPLAN_ALL চালু করে পরীক্ষা করা মুল হিসাবে একই কোয়েরি প্ল্যানটি দেয়। তবে আপনি দুটি ক্ষেত্র ব্যবহার করছেন যাতে আপনি পাগলের মতো কিছু চেষ্টা করতে পারেন:

    SELECT COUNT(DISTINCT convert(varchar(15),DocumentId)+'|~|'+convert(varchar(15), DocumentSessionId)) 
    FROM DocumentOutputItems

তবে NULs জড়িত থাকলে আপনার সমস্যা হবে। আমি শুধু মূল ক্যোয়ারী দিয়ে থাকি।


আমার কাছ থেকে +1 ধন্যবাদ তবে আপনার পরামর্শ অনুসারে আমি আমার প্রশ্নের সাথে লেগে থাকব। "রূপান্তর" ব্যবহার করা আরও বেশি পারফরম্যান্স হ্রাস করতে পারে।
নভিটজকি

2

আমি আমার নিজের ইস্যুতে গুগল করার সময় এটি পেয়েছিলাম, আপনি আবিষ্কার করেছেন যে আপনি যদি DISTINCT অবজেক্টগুলি গণনা করেন তবে আপনি সঠিক নম্বরটি পেয়েছেন (আমি মাইএসকিউএল ব্যবহার করছি)

SELECT COUNT(DISTINCT DocumentID) AS Count1, 
  COUNT(DISTINCT DocumentSessionId) AS Count2
  FROM DocumentOutputItems

5
উপরে ক্যোয়ারী কি ওপি (স্বতন্ত্র খুঁজছেন ছিল বেশি ফলাফল একটি ভিন্ন সেট ফিরে আসবে সমন্বয় এর DocumentIdএবং DocumentSessionId)। যদি ওপি মাইএসকিউএল ব্যবহার করে না এমএস এসকিউএল সার্ভার ব্যবহার করে তবে ইতিমধ্যে সঠিক উত্তর পোস্ট করেছেন আলেকজান্ডার কেজেল।
অ্যান্টনি জিওগেইগান

1

আমার ইচ্ছা এমএস এসকিউএলও COUNT (DISTINCT A, B) এর মতো কিছু করতে পারে। তবে তা পারে না।

প্রথমে জেঠির উত্তর আমার কাছে মনে হয়েছিল সমাধানের সমাধানের মতো কিছু পরীক্ষার পরে চেকসুম () অনন্য মূল্যবোধ তৈরি করতে ব্যর্থ হয়েছিল। একটি দ্রুত উদাহরণ হ'ল CHECKSUM (31,467,519) এবং CHECKSUM (69,1120,823) উভয়ই একই উত্তর দেয় যা 55।

তারপরে আমি কিছু গবেষণা করে দেখেছি যে মাইক্রোসফ্ট পরিবর্তন সনাক্তকরণের উদ্দেশ্যে CHECKSUM ব্যবহার করার পরামর্শ দেয় না। কিছু ফোরামে কিছু ব্যবহার করার পরামর্শ দেয়

SELECT COUNT(DISTINCT CHECKSUM(value1, value2, ..., valueN) + CHECKSUM(valueN, value(N-1), ..., value1))

তবে এটিও সন্দেহজনক নয়।

হিসাবে প্রস্তাব আপনি HASHBYTES () ফাংশন ব্যবহার করতে পারেন TSQL চেকসাম প্রহেলিকা । তবে এটির অনন্য ফলাফল না ফেরানোর একটি ছোট্ট সুযোগও রয়েছে।

আমি ব্যবহার করার পরামর্শ দিতে হবে

SELECT COUNT(DISTINCT CAST(DocumentId AS VARCHAR)+'-'+CAST(DocumentSessionId AS VARCHAR)) FROM DocumentOutputItems

1

এ কেমন,

Select DocumentId, DocumentSessionId, count(*) as c 
from DocumentOutputItems 
group by DocumentId, DocumentSessionId;

এটি আমাদের সাথে ডকুমেন্টআইডি এবং ডকুমেন্টসেশনআইডির সমস্ত সম্ভাব্য সংমিশ্রণের গণনা পাবে


0

এটা আমার জন্য কাজ করে. ওরাকলে:

SELECT SUM(DECODE(COUNT(*),1,1,1))
FROM DocumentOutputItems GROUP BY DocumentId, DocumentSessionId;

জেপিকিএল-তে:

SELECT SUM(CASE WHEN COUNT(i)=1 THEN 1 ELSE 1 END)
FROM DocumentOutputItems i GROUP BY i.DocumentId, i.DocumentSessionId;

0

আমার অনুরূপ প্রশ্ন ছিল তবে আমার যে ক্যোয়ারীটি ছিল তা মূল প্রশ্নের সাথে তুলনা করার ডেটা সহ একটি উপ-প্রশ্ন ছিল। কিছুটা এইরকম:

Select code, id, title, name 
(select count(distinct col1) from mytable where code = a.code and length(title) >0)
from mytable a
group by code, id, title, name
--needs distinct over col2 as well as col1

এর জটিলতাগুলি উপেক্ষা করে, আমি বুঝতে পেরেছি যে মূল প্রশ্নে বর্ণিত ডাবল সাব ক্যোয়ারী সহ আমি সাবকোয়রিতে a.code এর মান পেতে পারি না

Select count(1) from (select distinct col1, col2 from mytable where code = a.code...)
--this doesn't work because the sub-query doesn't know what "a" is

সুতরাং অবশেষে আমি বুঝতে পারি যে আমি প্রতারণা করতে এবং কলামগুলি একত্রিত করতে পারি:

Select count(distinct(col1 || col2)) from mytable where code = a.code...

এটিই কাজ শেষ করেছিল


0

আপনি যদি নির্দিষ্ট দৈর্ঘ্যের ডেটাটাইপগুলি নিয়ে কাজ করছেন তবে আপনি এটি binaryখুব সহজে এবং খুব দ্রুত করতে কাস্ট করতে পারেন। ধরে নিচ্ছি DocumentIdএবং DocumentSessionIdউভয়ই int, এবং তাই 4 বাইট দীর্ঘ ...

SELECT COUNT(DISTINCT CAST(DocumentId as binary(4)) + CAST(DocumentSessionId as binary(4)))
FROM DocumentOutputItems

আমার নির্দিষ্ট সমস্যাটির জন্য আমাকে বিভিন্ন বিদেশী কী এবং একটি তারিখের ক্ষেত্রের পৃথক সংমিশ্রণ SUMদ্বারা COUNTআলাদা করে, অন্য বিদেশী কী দ্বারা গ্রুপিং করা এবং মাঝে মাঝে নির্দিষ্ট মান বা কী দ্বারা ফিল্টার করা প্রয়োজন। টেবিলটি খুব বড় এবং উপ-কোয়েরি ব্যবহার করে নাটকীয়ভাবে ক্যোয়ারির সময় বাড়িয়েছে। এবং জটিলতার কারণে, পরিসংখ্যানগুলি কেবল একটি কার্যকর বিকল্প ছিল না। CHECKSUMসমাধান বিশেষ করে বিভিন্ন ধরনের তথ্য ফলে তার রূপান্তর মধ্যে পর্যন্ত খুব ধীর ছিল, এবং আমি তার অবিশ্বস্ততা ঝুঁকি করতে পারিনি।

তবে উপরের সমাধানটি ব্যবহার করে ক্যোয়ারির সময়টিতে কার্যত কোনও বৃদ্ধি হয়নি (কেবলমাত্র ব্যবহারের সাথে তুলনা করা SUM) এবং এটি সম্পূর্ণ নির্ভরযোগ্য হওয়া উচিত! এটি অন্যদের অনুরূপ পরিস্থিতিতে সহায়তা করতে সক্ষম হওয়া উচিত তাই আমি এটি এখানে পোস্ট করছি।


-1

আপনি কেবল দুটি বার গণনা ফাংশন ব্যবহার করতে পারেন।

এই ক্ষেত্রে, এটি হবে:

SELECT COUNT (DISTINCT DocumentId), COUNT (DISTINCT DocumentSessionId) 
FROM DocumentOutputItems

এটি প্রশ্নের প্রয়োজনীয় হিসাবে এটি করে না, এটি প্রতিটি কলামের জন্য পৃথক পৃথক গণনা করে
নাভিরাম

-1

এই কোডটি 2 টি প্যারামিটারে স্বতন্ত্র ব্যবহার করে এবং সেই স্বতন্ত্র মানগুলির সারি গণনার জন্য নির্দিষ্ট সারিগুলির সংখ্যা সরবরাহ করে count এটি মন্ত্রীর মতো মাইএসকিউএলে আমার জন্য কাজ করেছিল।

select DISTINCT DocumentId as i,  DocumentSessionId as s , count(*) 
from DocumentOutputItems   
group by i ,s;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.