কোয়েরি ভাষার রেফারেন্স (সংস্করণ 0.7)

গুগল ভিজ্যুয়ালাইজেশন এপিআই ক্যোয়ারী ল্যাঙ্গুয়েজ আপনাকে ডেটা উৎসের ক্যোয়ারী সহ বিভিন্ন ডেটা ম্যানিপুলেশন করতে দেয়।

সুচিপত্র

ভূমিকা

সাধারণত, ভিজ্যুয়ালাইজেশন কিছু নির্দিষ্ট আকারে ডেটা আশা করে। উদাহরণস্বরূপ, একটি পাই চার্ট দুটি কলাম হিসাবে ডেটা আশা করতে পারে: একটি পাঠ্য লেবেল এবং একটি সংখ্যাসূচক মান। ডেটা উত্সের মধ্যে থাকা ডেটা এই কাঠামোর সাথে ঠিক মেলে না। উদাহরণ স্বরূপ ডাটা সোর্সে দুইটির বেশি কলাম থাকতে পারে, অথবা কলামের ক্রম পাই চার্টের প্রত্যাশিত অর্ডারের সাথে মেলে না।

ক্যোয়ারী ভাষা ডেটা উৎসে ডেটা ম্যানিপুলেশন এবং ফরম্যাটিং অনুরোধ পাঠানোর ক্ষমতা প্রদান করে এবং নিশ্চিত করে যে প্রত্যাবর্তিত ডেটা কাঠামো এবং বিষয়বস্তু প্রত্যাশিত কাঠামোর সাথে মেলে।

ক্যোয়ারী ভাষার সিনট্যাক্স SQL এর অনুরূপ। এসকিউএল-এর সাথে পরিচিত ডেভেলপারদের দ্রুত এই ক্যোয়ারী ভাষা শিখতে এবং ব্যবহার করতে সক্ষম হওয়া উচিত। ওয়েবে অনেক SQL টিউটোরিয়াল পাওয়া যায়। এই ক্যোয়ারী ভাষা এবং SQL এর মধ্যে কিছু পার্থক্য রয়েছে যা সিনট্যাক্স বিভাগে বর্ণনা করা হয়েছে।

মনে রাখবেন যে কোয়েরি ভাষা প্রয়োগ করতে ডেটা উত্সগুলির প্রয়োজন হয় না, বা যদি তারা করে তবে ভাষার সমস্ত বৈশিষ্ট্য বাস্তবায়ন করতে। অন্যথায় বিশ্বাস করার কারণ না থাকলে, এই ভাষার সমস্ত বৈশিষ্ট্য বাস্তবায়নের জন্য আপনার কোনো ডেটা উৎসের উপর নির্ভর করা উচিত নয়।

ক্যোয়ারী ভাষা ব্যবহার করে

আপনি দুটি উপায়ে একটি ডেটা উত্স অনুরোধে একটি ক্যোয়ারী স্ট্রিং সংযুক্ত করতে পারেন: জাভাস্ক্রিপ্ট কোডের মধ্যে থেকে কোয়েরি স্ট্রিং সেট করে, অথবা ডেটা উত্স URL- এ একটি প্যারামিটার হিসাবে ক্যোয়ারী স্ট্রিং সেট করে৷ যদি আপনার অনুরোধে একটি ক্যোয়ারী স্ট্রিং অন্তর্ভুক্ত না থাকে, তাহলে একটি ডেটা উৎসের জন্য ডিফল্ট আচরণ হল তার ডিফল্ট সারি/কলাম ক্রম এবং বিন্যাস ব্যবহার করে সমস্ত সারি এবং কলাম ফেরত দেওয়া। আপনি একটি ডেটা উৎসে আপনার অনুরোধে একটি ক্যোয়ারী স্ট্রিং অন্তর্ভুক্ত করে এটি পরিবর্তন করতে পারেন।

জাভাস্ক্রিপ্ট থেকে ক্যোয়ারী সেট করা

JavaScript কোডের মধ্যে থেকে কোয়েরি স্ট্রিং সেট করতে, google.visualization.Query ক্লাসের setQuery পদ্ধতিতে কল করুন।

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

ডেটা উৎস URL-এ ক্যোয়ারী সেট করা

ক্যোয়ারী স্ট্রিংটি tq প্যারামিটার ব্যবহার করে ডেটা সোর্স URL-এ যোগ করা যেতে পারে। JavaScript-এর পরিবর্তে URL প্যারামিটারে ক্যোয়ারী সেট করা আপনাকে সহজেই অন্যান্য ডেভেলপারদের দ্বারা লিখিত ভিজ্যুয়ালাইজেশন ব্যবহার করতে দেয় এবং তারপরও ক্যোয়ারী কাস্টমাইজ করতে সক্ষম হয়।

ক্যোয়ারী স্ট্রিং একটি URL প্যারামিটার হিসাবে সঠিকভাবে এনকোড করা আবশ্যক। আপনি JavaScript encodeURIComponent ফাংশন ব্যবহার করে একটি URL এনকোড করতে পারেন, অথবা আপনি এই বিভাগের শেষে এনকোডিং টুল ব্যবহার করে হাতে এনকোড করতে পারেন।

উদাহরণ:

একটি Google স্প্রেডশীটের জন্য নিম্নলিখিত ক্যোয়ারী স্ট্রিংটি বিবেচনা করুন৷ (মনে রাখবেন যে স্প্রেডশীটে কলাম আইডিগুলি সর্বদা অক্ষর হয়; প্রকাশিত স্প্রেডশীটে দেখানো কলাম শিরোনাম পাঠ্যটি লেবেল, আইডি নয়। আপনার ক্যোয়ারী স্ট্রিংয়ে আপনাকে অবশ্যই আইডি ব্যবহার করতে হবে, লেবেল নয়।)

select A, sum(B) group by A

এনকোড করা হলে, এই প্রশ্নটি হয়ে যায়:

select%20A%2C%20sum(B)%20group%20by%20A

অনুমান করুন যে এটি আপনার স্প্রেডশীটের URL:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

আপনার চূড়ান্ত ক্যোয়ারী স্ট্রিং পেতে স্প্রেডশীট URL-এ /gviz/tq?tq= YOUR_QUERY_STRING যোগ করুন:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

একটি ক্যোয়ারী স্ট্রিং এনকোড বা ডিকোড করতে নীচের টুলটি ব্যবহার করুন:

দ্রষ্টব্য: ব্যক্তিগত স্প্রেডশীট ডেটা অ্যাক্সেস করার জন্য OAuth ব্যবহার করে স্পষ্ট অনুমোদনের শংসাপত্রগুলি পাস করতে হবে। আরও বিস্তারিত জানার জন্য Google স্প্রেডশীট: অনুমোদন বিভাগ দেখুন।

ভাষা সিনট্যাক্স

ওভারভিউ

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

ডেটা টেবিল

এই নথিটি একটি প্রশ্নের ফলাফল সেট উল্লেখ করতে ডেটা টেবিল শব্দটি ব্যবহার করে। একটি ডেটা টেবিল সারি এবং কলাম নিয়ে গঠিত। একটি ডেটা টেবিলের প্রতিটি কলামের নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • শনাক্তকারী (বা কলাম আইডি )। কোয়েরির মধ্যে কলাম রেফারেন্স করতে ব্যবহৃত হয়। মনে রাখবেন যে আপনি কখনই একটি ক্যোয়ারীতে লেবেল দ্বারা একটি কলাম উল্লেখ করার চেষ্টা করবেন না, শুধুমাত্র শনাক্তকারী দ্বারা। টিপ: স্পেস আছে এমন কোনো আইডি ব্যবহার না করার চেষ্টা করুন; স্পেসগুলি পরিচালনা করা কঠিন এবং আপনার কোডিংয়ে আপনাকে ছোট, কিন্তু ভুল খুঁজে পাওয়া কঠিন হতে পারে। অতিরিক্তভাবে, একটি আইডি যাতে স্পেস রয়েছে তা অবশ্যই ব্যাক-কোট দ্বারা বেষ্টিত হতে হবে।
  • লেবেল একটি string যা সাধারণত শেষ ব্যবহারকারীদের কাছে প্রদর্শিত হয়। উদাহরণস্বরূপ একটি পাই চার্টের মধ্যে একটি কিংবদন্তি হিসাবে, বা একটি টেবিলে একটি কলাম হেডার৷
  • ডেটা টাইপ । সমর্থিত ডেটা প্রকারগুলি হল string , number , boolean , date , datetime এবং timeofday । একটি কলামের সমস্ত মানগুলির একটি ডেটা টাইপ থাকবে যা কলামের প্রকারের সাথে মেলে, বা একটি null মান। এই ধরনের জাভাস্ক্রিপ্ট ধরনের অনুরূপ, কিন্তু অভিন্ন নয়. এই পৃষ্ঠার আক্ষরিক বিভাগে বর্ণিত।
  • বিন্যাস প্যাটার্ন । ডেটা উৎস তার কিছু বা সমস্ত কলামের জন্য বিন্যাস নিদর্শন সংজ্ঞায়িত করতে পারে। আপনি একটি বিন্যাস ধারা অন্তর্ভুক্ত করে এই প্যাটার্নটি ওভাররাইড করতে পারেন।

সমস্ত উদাহরণে ব্যবহৃত টেবিল:

এই বিভাগ জুড়ে, প্রশ্নের সমস্ত উদাহরণ নিম্নলিখিত সারণীতে উল্লেখ করে। কলাম হেডার হল কলাম শনাক্তকারী।

name
string
dept
string
lunchTime
timeofday
salary
number
hireDate
date
age
number
isSenior
boolean
seniorityStartTime
datetime
JohnEng12:00:00
1000
2005-03-1935true2007-12-02 15:56:00
DaveEng12:00:00
500
2006-04-1927falsenull
SallyEng13:00:00
600
2005-10-1030falsenull
BenSales12:00:00
400
2002-10-1032true2005-03-09 12:30:00
DanaSales12:00:00
350
2004-09-0825falsenull
MikeMarketing13:00:00
800
2005-01-1024true2007-12-30 14:40:00

ভাষার ধারা

ক্যোয়ারী ভাষার সিনট্যাক্স নিম্নলিখিত ধারাগুলি নিয়ে গঠিত। প্রতিটি ক্লজ এক বা দুটি কীওয়ার্ড দিয়ে শুরু হয়। সমস্ত ধারা ঐচ্ছিক. ক্লজগুলি শূন্যস্থান দ্বারা পৃথক করা হয়। ধারাগুলির ক্রম নিম্নরূপ হতে হবে:

ধারা ব্যবহার
select কোন কলামগুলি ফেরত দিতে হবে তা নির্বাচন করে এবং কোন ক্রমে। বাদ দেওয়া হলে, টেবিলের সমস্ত কলাম তাদের ডিফল্ট ক্রমে ফেরত দেওয়া হয়।
where শুধুমাত্র একটি শর্তের সাথে মেলে এমন সারিগুলি দেখায়৷ বাদ দেওয়া হলে, সমস্ত সারি ফেরত দেওয়া হয়।
group by সারি জুড়ে মান একত্রিত করে।
pivot কলামের স্বতন্ত্র মানগুলিকে নতুন কলামে রূপান্তরিত করে।
order by কলামে মান অনুসারে সারি সাজায়।
limit প্রত্যাবর্তিত সারির সংখ্যা সীমিত করে।
offset প্রথম সারিগুলির একটি প্রদত্ত সংখ্যা এড়িয়ে যায়।
label কলাম লেবেল সেট করে।
format প্রদত্ত ফরম্যাটিং প্যাটার্ন ব্যবহার করে নির্দিষ্ট কলামে মানগুলি ফর্ম্যাট করে।
options অতিরিক্ত বিকল্প সেট করে।
from from the clauseটি ভাষা থেকে বাদ দেওয়া হয়েছে।

নির্বাচন করুন

select ক্লজটি রিটার্ন করার জন্য কলাম এবং তাদের অর্ডার নির্দিষ্ট করতে ব্যবহৃত হয়। যদি এই ধারাটি নির্দিষ্ট করা না থাকে, বা যদি select * ব্যবহার করা হয়, তবে ডেটা উত্স টেবিলের সমস্ত কলাম তাদের আসল ক্রমে ফিরিয়ে দেওয়া হয়। কলাম শনাক্তকারী দ্বারা উল্লেখ করা হয় (লেবেল দ্বারা নয়)। উদাহরণস্বরূপ, একটি Google স্প্রেডশীটে, কলাম শনাক্তকারী হল এক বা দুটি অক্ষরের কলাম অক্ষর (A, B, C, ...)।

একটি select ধারার আইটেমগুলি কলাম শনাক্তকারী, বা একত্রীকরণ ফাংশনের আউটপুট, স্কেলার ফাংশন বা অপারেটর হতে পারে।

উদাহরণ:

select *
select dept, salary
select max(salary)

নিম্নলিখিত উদাহরণে, ব্যাক-কোটগুলি কলাম আইডি উল্লেখ করতে ব্যবহৃত হয় যাতে স্পেস রয়েছে (ইমেল ঠিকানা) বা সংরক্ষিত শব্দ (তারিখ):

select `email address`, name, `date`

উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো হচ্ছে:

select lunchTime, name

নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

lunchTime name
12:00:00John
12:00:00Dave
13:00:00Sally
12:00:00Ben
12:00:00Dana
13:00:00Mike

কোথায়

where ক্লজটি শুধুমাত্র একটি নির্দিষ্ট শর্তের সাথে মেলে এমন সারি ফেরাতে ব্যবহৃত হয়।

সহজ তুলনা অপারেটর হল <=, <, >, >=, =, !=, <> । উভয় তুলনা অপারেটর != <> মানে সমান নয়। স্ট্রিংগুলি অভিধানিক মান দ্বারা তুলনা করা হয়। মনে রাখবেন যে সমতা = দ্বারা নির্দেশিত হয়, না == বেশিরভাগ কম্পিউটার ভাষার মতো। null এর সাথে তুলনা করা হয় is null বা is not null ব্যবহার করে।

আপনি লজিক্যাল অপারেটর and , or , এবং not ব্যবহার করে একাধিক শর্তে যোগ দিতে পারেন৷ সুস্পষ্ট অগ্রাধিকার সংজ্ঞায়িত করতে বন্ধনী ব্যবহার করা যেতে পারে।

যেখানে ক্লজ আরও কিছু জটিল স্ট্রিং তুলনা অপারেটরকে সমর্থন করে। এই অপারেটররা আর্গুমেন্ট হিসাবে দুটি স্ট্রিং নেয়; যে কোনো নন-স্ট্রিং আর্গুমেন্ট (উদাহরণস্বরূপ, তারিখ বা সংখ্যা) তুলনা করার আগে স্ট্রিং-এ রূপান্তরিত হবে। স্ট্রিং ম্যাচিং কেস সংবেদনশীল (আপনি এটিকে ঘিরে কাজ করতে upper() বা lower() স্কেলার ফাংশন ব্যবহার করতে পারেন)।

  • contains - একটি সাবস্ট্রিং মিল। whole-এর মধ্যে অংশ contains সত্য যদি অংশ সমগ্রের মধ্যে কোথাও থাকে। উদাহরণ: where name contains 'John' সাথে 'John', 'John Adams', 'Long John Silver' আছে কিন্তু 'john Adams' এর সাথে মেলে না।
  • starts with - একটি উপসর্গ মিল। মানের শুরুতে উপসর্গ থাকলে মানটি উপসর্গ starts with হয় সত্য। উদাহরণ: where dept starts with 'engineering' 'ইঞ্জিনিয়ারিং' এবং 'ইঞ্জিনিয়ারিং ম্যানেজার' এর সাথে মেলে। where dept starts with 'e' 'ইঞ্জিনিয়ারিং', 'ইং' এবং 'ই'-এর সাথে মিলে যায়।
  • ends with - একটি প্রত্যয় মিল। প্রত্যয় ends with মান শেষ হয় সত্য যদি প্রত্যয় মানের শেষে থাকে। উদাহরণ: where role ends with 'y' সেখানে 'কাউবয়', 'বয়' এবং 'y' মেলে।
  • matches - A (preg) রেগুলার এক্সপ্রেশন ম্যাচ। খড়ের matches সুই সত্য যদি সুচের রেগুলার এক্সপ্রেশন খড়ের গাদা মেলে। উদাহরণ: where country matches '.*ia' ভারত এবং নাইজেরিয়ার সাথে মেলে, কিন্তু ইন্ডিয়ানা নয়। মনে রাখবেন যে এটি একটি বিশ্বব্যাপী অনুসন্ধান নয়, তাই where country matches 'an' 'কানাডা'র সাথে মিলবে না।
  • like - একটি টেক্সট অনুসন্ধান যা দুটি ওয়াইল্ডকার্ড সমর্থন করে: %, যেটি যেকোনো ধরনের শূন্য বা তার বেশি অক্ষরের সাথে মেলে এবং _ (আন্ডারস্কোর), যা যেকোনো একটি অক্ষরের সাথে মেলে। এটি এসকিউএল লাইক অপারেটরের অনুরূপ। উদাহরণ: where name like fre% 'fre', 'fred', এবং 'freddy'-এর সাথে মেলে।

উদাহরণ:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো হচ্ছে:

select name where salary > 700

নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

name
John
Mike

দ্বারা গ্রুপ

ধারা group by সারি জুড়ে মানগুলিকে একত্রিত করতে ব্যবহৃত হয়। গোষ্ঠী অনুসারে মানের প্রতিটি স্বতন্ত্র সমন্বয়ের জন্য একটি একক সারি তৈরি করা হয়েছে। তথ্য স্বয়ংক্রিয়ভাবে গ্রুপিং কলাম দ্বারা বাছাই করা হয়, যদি না অন্যথায় ধারা order by দ্বারা নির্দিষ্ট করা হয়।

দ্রষ্টব্য: আপনি যদি ধারা group by ব্যবহার করেন, তাহলে select ধারায় তালিকাভুক্ত প্রতিটি কলাম অবশ্যই দফা group by তালিকাভুক্ত হতে হবে, অথবা একটি সমষ্টি ফাংশন দ্বারা মোড়ানো হবে।

উদাহরণ:

select dept, max(salary) group by dept

উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো হচ্ছে:

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

lunchTime avg-salary count-age
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

পিভট

pivot ক্লজটি কলামের স্বতন্ত্র মানগুলিকে নতুন কলামে রূপান্তর করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি কলাম 'বছর' দ্বারা একটি পিভট মূল টেবিলে প্রদর্শিত প্রতিটি স্বতন্ত্র বছরের জন্য একটি কলাম সহ একটি টেবিল তৈরি করবে। এটি কার্যকর হতে পারে যদি, উদাহরণস্বরূপ, একটি লাইন চার্ট ভিজ্যুয়ালাইজেশন প্রতিটি কলামকে একটি পৃথক লাইন হিসাবে আঁকে। আপনি যদি প্রতি বছরের জন্য একটি পৃথক লাইন আঁকতে চান এবং 'বছর' হল মূল টেবিলের কলামগুলির মধ্যে একটি, তাহলে প্রয়োজনীয় ডেটা ট্রান্সফরমেশন করার জন্য একটি পিভট অপারেশন ব্যবহার করা একটি ভাল বিকল্প হবে।

দ্রষ্টব্য: আপনি যদি একটি pivot ক্লজ ব্যবহার করেন, তাহলে select ধারায় তালিকাভুক্ত প্রতিটি কলাম অবশ্যই ধারা group by তালিকাভুক্ত হতে হবে, অথবা একটি সমষ্টি ফাংশন দ্বারা মোড়ানো হবে

যেহেতু একাধিক সারিতে পিভট কলামের জন্য একই মান থাকতে পারে, তাই পিভট একত্রীকরণ বোঝায়। মনে রাখবেন যে group by ব্যবহার না করে pivot ব্যবহার করার সময়, ফলাফল টেবিলে ঠিক একটি সারি থাকবে। উদাহরণস্বরূপ, উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো:

select sum(salary) pivot dept

নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

Eng sum-salary Marketing sum-salary Sales sum-salary
2100 800 750

এর কারণ হল 2100 হল Eng ডিপার্টমেন্টের বেতনের সমষ্টি, মার্কেটিং ডিপার্টমেন্টের জন্য 800 ইত্যাদি।

group by pivot একসাথে ব্যবহার করা আরও বেশি কার্যকর হতে পারে, কারণ এটি একটি টেবিল তৈরি করে যেখানে প্রতিটি কক্ষ প্রাসঙ্গিক সারি এবং প্রাসঙ্গিক কলামের একত্রিতকরণের ফলাফল ধারণ করে। উদাহরণস্বরূপ, উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো হচ্ছে:

select dept, sum(salary)
  group by dept
  pivot lunchTime

নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

dept 12:00:00 sum-salary 13:00:00 sum-salary
Eng 1500 600
Marketing null 800
Sales 750 null

এছাড়াও আপনি এই টেবিলটিকে "উল্টাতে" পারেন, কলাম এবং সারি পরিবর্তন করে, pivot কলাম এবং কলাম group by মধ্যে স্যুইচ করে৷ উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো হচ্ছে:

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

lunchTime Eng sum-salary Marketing sum-salary Sales sum-salary
12:00:00 1500 null 750
13:00:00 600 800 null

আপনি pivot ক্লজে একাধিক কলাম ব্যবহার করতে পারেন। এই ধরনের ক্ষেত্রে রেসপন্স টেবিলের কলামগুলি মূল টেবিলে বিদ্যমান কলামের মানগুলির সমস্ত অনন্য সমন্বয় দ্বারা গঠিত। উদাহরণস্বরূপ, উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো:

select sum(salary)
  pivot dept, lunchTime

নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

Eng,12:00:00 sum-salary Eng,13:00:00 sum-salary Marketing,13:00:00 sum-salary Sales,12:00:00 sum-salary
1500 600 800 750

মনে রাখবেন যে শুধুমাত্র মূল সারণীতে প্রদর্শিত সংমিশ্রণগুলি প্রতিক্রিয়া সারণীতে কলাম দেওয়া হয়েছে৷ এই কারণেই মার্কেটিং,12:00:00 বা বিক্রয়,13:00:00 এর জন্য কোন কলাম নেই।

একাধিক সমষ্টি ব্যবহার করাও সম্ভব। উদাহরণস্বরূপ, উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো:

select sum(salary), max(lunchTime)
  pivot dept

নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

Eng sum-salary Marketing sum-salary Sales sum-salary Eng max-lunchTime Marketing max-lunchTime Sales max-lunchTime
2100 800 750 13:00:00 13:00:00 12:00:00

আপনি select ক্লজে একাধিক অ্যাগ্রিগেশন, ক্লজ group by একাধিক কলাম এবং pivot ক্লজে একাধিক কলাম একত্রিত করতে পারেন। অভ্যন্তরীণভাবে, একত্রিত করা হয় গোষ্ঠীর কলামগুলির সংযোজন এবং পিভট ধারাগুলির দ্বারা।

pivot ক্লজে নির্দিষ্ট করা কলামগুলি select , group by বা order by ক্রমানুসারে উপস্থিত নাও হতে পারে৷ যখন pivot ব্যবহার করা হয়, ক্লজ order by কোনো একত্রীকরণ কলাম থাকতে পারে না। এর কারণ হল যে select ধারায় নির্দিষ্ট করা প্রতিটি সমষ্টির জন্য, ফলাফল টেবিলে অনেক কলাম তৈরি হয়। যাইহোক, যখন pivot ব্যবহার করা হয় তখন আপনি এগ্রিগেশন কলাম ফরম্যাট করতে পারেন। এই ধরনের একটি বিন্যাসের ফলাফল হল যে নির্দিষ্ট একত্রিতকরণের সাথে প্রাসঙ্গিক সমস্ত নতুন কলাম, যা পিভট অপারেশন দ্বারা উত্পন্ন হয়, নির্দিষ্ট প্যাটার্ন দ্বারা বিন্যাসিত হয়। উপরের উদাহরণে, format sum(salary) "some_format_string" নিম্নলিখিত কলামগুলিকে প্রভাবিত করবে: Eng sum-salary, Marketing sum-salary এবং Sales sum-salary।

আপনি একত্রিত কলাম লেবেল করতে পারেন. যদি label ক্লজে কোনো লেবেল নির্দিষ্ট করা না থাকে, তাহলে পিভটিংয়ের ফলে উৎপন্ন একটি কলামের লেবেলটি পিভট কলামের মানগুলির তালিকা, একত্রিতকরণের ধরন (মিনিট, সর্বোচ্চ, যোগফল, ...) এবং একত্রিত কলামের লেবেল। যেমন "Eng,12:00:00 sum বেতন"। select ধারায় যদি শুধুমাত্র একটি সমষ্টি নির্দিষ্ট করা থাকে তবে সমষ্টির অংশটি লেবেল থেকে সরানো হয় এবং শুধুমাত্র পিভট কলামের মানগুলির তালিকা রাখা হয়। যেমন "Eng,12:00:00"। যখন একটি label ক্লজ একটি সমষ্টি কলামের জন্য একটি লেবেল নির্দিষ্ট করে, তখন অনুরোধ করা লেবেলটি মানগুলির তালিকায় যুক্ত করা হয়, উভয়ই যখন select ধারায় শুধুমাত্র একটি সমষ্টি থাকে এবং যখন একাধিক থাকে৷ উদাহরণস্বরূপ, label sum(salary) "sumsal" এর ফলে কলাম লেবেল হবে "Eng,12:00:00 sumsal", "Eng,13:00:00 sumsal", ইত্যাদি।

দ্বারা অর্ডার

ধারা order by নির্দিষ্ট কলামের মান অনুসারে সারিগুলি সাজাতে ব্যবহৃত হয়।

ধারা order by আইটেমগুলি কলাম শনাক্তকারী, বা একত্রীকরণ ফাংশনের আউটপুট, স্কেলার ফাংশন বা অপারেটর হতে পারে।

উদাহরণ:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

সীমা

limit ধারাটি প্রত্যাবর্তিত সারির সংখ্যা সীমিত করতে ব্যবহৃত হয়।

উদাহরণ:

limit 100

অফসেট

offset ক্লজটি প্রথম সারিগুলির একটি প্রদত্ত সংখ্যা এড়িয়ে যেতে ব্যবহৃত হয়। যদি একটি limit ধারা ব্যবহার করা হয়, offset প্রথমে প্রয়োগ করা হয়: উদাহরণস্বরূপ, limit 15 offset 30 31 থেকে 45 পর্যন্ত সারি প্রদান করে।

উদাহরণ:

offset 10
limit 30 offset 210

লেবেল

label ক্লজটি এক বা একাধিক কলামের জন্য লেবেল সেট করতে ব্যবহৃত হয়। মনে রাখবেন যে আপনি একটি প্রশ্নে একটি আইডির জায়গায় একটি লেবেল মান ব্যবহার করতে পারবেন না৷

একটি label ক্লজের আইটেমগুলি কলাম শনাক্তকারী, বা একত্রীকরণ ফাংশনের আউটপুট, স্কেলার ফাংশন বা অপারেটর হতে পারে।

বাক্য গঠন:

label column_id label_string [,column_id label_string]
column_id
কলামের শনাক্তকারীকে লেবেল বরাদ্দ করা হচ্ছে।
label_string
সেই কলামে যে লেবেলটি বরাদ্দ করা হবে। অনেক ভিজ্যুয়ালাইজেশন কলাম লেবেলটিকে শেষ-ব্যবহারকারীর কাছে প্রদর্শনের জন্য পাঠ্য হিসাবে ব্যবহার করে, যেমন পাই চার্টে একটি কিংবদন্তি লেবেল। লেবেল হল স্ট্রিং লিটারেল , এবং সেই সিনট্যাক্স নিয়মগুলি অনুসরণ করুন।

উদাহরণ:

নিম্নলিখিত উদাহরণটি ডিপার্টমেন্ট কলামের লেবেলটিকে "বিভাগ", নামের কলামের লেবেল "কর্মচারীর নাম" এবং অবস্থান কলামের লেবেলটিকে "কর্মচারী অবস্থান" এ সেট করে:

label dept 'Department', name "Employee Name", location 'Employee Location'

বিন্যাস

format ধারাটি এক বা একাধিক কলামে ঘরের জন্য একটি বিন্যাসিত মান নির্দিষ্ট করতে ব্যবহৃত হয়। প্রত্যাবর্তিত ডেটাতে একটি ফরম্যাট করা কলামে প্রতিটি কক্ষের জন্য একটি প্রকৃত মান এবং একটি ফর্ম্যাট করা মান উভয়ই অন্তর্ভুক্ত করা উচিত। অনেক ভিজ্যুয়ালাইজেশন গণনার জন্য বিন্যাসহীন মান ব্যবহার করে, কিন্তু প্রদর্শনের জন্য বিন্যাসিত মান। আপনি এই ধারায় যে নিদর্শনগুলি নির্দিষ্ট করেছেন তা সাধারণত সংশ্লিষ্ট কলামগুলির প্যাটার্ন সম্পত্তিতে ফেরত দেওয়া হয়।

প্যাটার্ন সিনট্যাক্স:

number , date , timeofday , datetime
ICU দ্বারা সংজ্ঞায়িত তারিখ এবং সংখ্যা নিদর্শন।
boolean
প্যাটার্ন হল ' মান-যদি-সত্য : মান-যদি-মিথ্যা ' বিন্যাসে একটি string

উদাহরণ:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

অপশন

options ক্লজটি ক্যোয়ারী এক্সিকিউশনের জন্য অতিরিক্ত বিকল্প নিয়ন্ত্রণ করতে ব্যবহৃত হয়। options ধারা অনুসরণ করতে পারে এমন সম্ভাব্য কীওয়ার্ডগুলি হল:

  • no_format ফলাফল থেকে ফরম্যাট করা মানগুলি সরিয়ে দেয় এবং শুধুমাত্র অন্তর্নিহিত মানগুলি ছেড়ে দেয়। যখন নির্দিষ্ট ভিজ্যুয়ালাইজেশন প্রতিক্রিয়ার আকার কমাতে বিন্যাসিত মান ব্যবহার করে না তখন ব্যবহার করা যেতে পারে।
  • no_values ​​ফলাফল থেকে অন্তর্নিহিত মানগুলি সরিয়ে দেয় এবং শুধুমাত্র বিন্যাসিত মানগুলি ছেড়ে দেয়। যখন নির্দিষ্ট ভিজ্যুয়ালাইজেশন প্রতিক্রিয়ার আকার কমাতে শুধুমাত্র বিন্যাসিত মান ব্যবহার করে তখন ব্যবহার করা যেতে পারে।

ডেটা ম্যানিপুলেশন ফাংশন

বিভিন্ন ধরণের অপারেটর এবং ফাংশন রয়েছে যা আপনাকে একটি একক কলামে ডেটা ম্যানিপুলেট বা একত্রিত করতে বা কলাম জুড়ে ডেটা তুলনা বা একত্রিত করতে দেয়। উদাহরণগুলির মধ্যে রয়েছে sum() (একটি কলামে সমস্ত মান যোগ করতে), সর্বোচ্চ (একটি কলামে সবচেয়ে বড় মান খুঁজে বের করতে), এবং + (একই সারিতে দুটি কলামের মান একসাথে যোগ করতে)।

কিছু ফাংশন যেকোন ক্লজে উপস্থিত হতে পারে; কিছু ধারার উপসেটে উপস্থিত হতে পারে। এই নীচে নথিভুক্ত করা হয়.

উদাহরণ:

এই টেবিল দেওয়া ... যদি আমরা এই প্রশ্নটি প্রয়োগ করি... আমরা এই ফলাফল পেতে.
নাম বেতন ট্যাক্স শুরুর তারিখ
শ্যারন 1000 100 1/1/2009
খুব গুরুত্বপূর্ণ 2000 200 1/21/2008
মোরান 3000 300 2/12/2008
select upper(name), year(startDate)
নাম বছর (শুরু তারিখ)
খুব গুরুত্বপূর্ণ 2008
মোরান 2008
শ্যারন 2009

নিম্নলিখিত ডেটা ম্যানিপুলেশন ফাংশনগুলি Google ভিজ্যুয়ালাইজেশন API ক্যোয়ারী ভাষা দ্বারা সংজ্ঞায়িত করা হয়েছে:

একত্রিতকরণ ফাংশন

একত্রিতকরণ ফাংশনগুলিকে একটি একক কলাম শনাক্তকারী পাস করা হয় এবং প্রতিটি গোষ্ঠীর সমস্ত মান জুড়ে একটি ক্রিয়া সম্পাদন করে (গ্রুপগুলিকে group by বা pivot ক্লজ দ্বারা নির্দিষ্ট করা হয়, অথবা যদি সেই ধারাগুলি ব্যবহার না করা হয় তবে সমস্ত সারি)।

উদাহরণ:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

একত্রিতকরণ ফাংশন select , order by , label , format ধারায় ব্যবহার করা যেতে পারে। তারা where , group by , pivot , limit , offset , বা options ধারাগুলিতে উপস্থিত হতে পারে না

এখানে সমর্থিত একত্রীকরণ ফাংশন আছে:

নাম বর্ণনা সমর্থিত কলাম প্রকার রিটার্ন টাইপ
avg() একটি গোষ্ঠীর জন্য কলামের সমস্ত মানের গড় মান প্রদান করে। number number
count() একটি গ্রুপের জন্য নির্দিষ্ট কলামে উপাদানের গণনা প্রদান করে। নাল কোষ গণনা করা হয় না. যেকোন ধরণের number
max() একটি গোষ্ঠীর জন্য কলামে সর্বাধিক মান প্রদান করে। তারিখগুলি আগের ছোট হওয়ার সাথে তুলনা করা হয়, string বর্ণানুক্রমিকভাবে তুলনা করা হয়, কেস-সংবেদনশীলতার সাথে। যেকোন ধরণের কলাম হিসাবে একই ধরনের
min() একটি গোষ্ঠীর জন্য কলামে সর্বনিম্ন মান প্রদান করে। তারিখগুলি আগের ছোট হওয়ার সাথে তুলনা করা হয়, string বর্ণানুক্রমিকভাবে তুলনা করা হয়, কেস-সংবেদনশীলতার সাথে যেকোন ধরণের কলাম হিসাবে একই ধরনের
sum() একটি গোষ্ঠীর জন্য কলামের সমস্ত মানের সমষ্টি প্রদান করে৷ number number

দ্রষ্টব্য: একত্রিতকরণ ফাংশন শুধুমাত্র একটি কলাম শনাক্তকারীকে একটি যুক্তি হিসাবে নিতে পারে:

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

স্কেলার ফাংশন

স্কেলার ফাংশন অন্য মান তৈরি করতে শূন্য বা তার বেশি প্যারামিটারের উপর কাজ করে। স্কেলার ফাংশন যে কোনো এক্সপ্রেশন পাস করা যেতে পারে যা উপযুক্ত ধরনের প্যারামিটারে মূল্যায়ন করে। মনে রাখবেন যে এই প্রকারগুলি হল এই নথির লিটারাল বিভাগে সংজ্ঞায়িত প্রকার, যা একইভাবে নাম দেওয়া জাভাস্ক্রিপ্ট অবজেক্টের থেকে কিছুটা আলাদা হতে পারে।

মনে রাখবেন যে কলামের নামটি একটি স্কেলার ফাংশন দিয়ে মোড়ানোর মাধ্যমে পরিবর্তন করা হবে।

স্কেলার ফাংশনগুলি একটি প্যারামিটার হিসাবে নিতে পারে যা একটি একক মানকে মূল্যায়ন করে:

year(max(startDate))
datediff(now(), todate(1234567890000))

স্কেলার ফাংশনগুলি নিম্নলিখিত ধারাগুলির মধ্যে যে কোনওটিতে ব্যবহার করা যেতে পারে: select , where , group by , pivot , order by , label , এবং format

নাম
year()

একটি তারিখ বা তারিখ সময় মান থেকে বছরের মান প্রদান করে। উদাহরণস্বরূপ: year(date "2009-02-05") 2009 প্রদান করে।

পরামিতি: date বা datetime টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
month()

একটি তারিখ বা তারিখ সময় মান থেকে শূন্য-ভিত্তিক মাসের মান প্রদান করে। উদাহরণস্বরূপ: month(date "2009-02-05") 1 প্রদান করে। দ্রষ্টব্য: মাসগুলি 0-ভিত্তিক, তাই ফাংশনটি জানুয়ারির জন্য 0, ফেব্রুয়ারির জন্য 1 ইত্যাদি প্রদান করে।

পরামিতি: date বা datetime টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
day()

একটি date বা তারিখ সময় মান থেকে মাসের দিন প্রদান করে। উদাহরণস্বরূপ: day(date "2009-02-05") 5 প্রদান করে।

পরামিতি: date বা datetime টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
hour()

একটি তারিখ সময় বা timeofday মান থেকে ঘন্টার মান প্রদান করে। যেমন: hour(timeofday "12:03:17") 12 রিটার্ন করে।

পরামিতি: datetime বা timeofday টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
minute()

একটি datetime বা timeofday মান থেকে মিনিটের মান প্রদান করে। উদাহরণস্বরূপ: minute(timeofday "12:03:17") 3 প্রদান করে।

পরামিতি: datetime বা timeofday টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
second()

একটি datetime বা timeofday মান থেকে দ্বিতীয় মান প্রদান করে। যেমন: second(timeofday "12:03:17") 17 প্রদান করে।

পরামিতি: datetime বা timeofday টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
millisecond()

একটি datetime বা timeofday মানের মিলিসেকেন্ড অংশ প্রদান করে। উদাহরণস্বরূপ: millisecond(timeofday "12:03:17.123") 123 প্রদান করে।

পরামিতি: datetime বা timeofday টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
quarter()

একটি date বা datetime মান থেকে ত্রৈমাসিক প্রদান করে। উদাহরণস্বরূপ: quarter(date "2009-02-05") 1 প্রদান করে। মনে রাখবেন যে ত্রৈমাসিকগুলি 1-ভিত্তিক, তাই ফাংশনটি প্রথম ত্রৈমাসিকের জন্য 1, দ্বিতীয়টির জন্য 2 ইত্যাদি প্রদান করে।

পরামিতি: date বা datetime টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
dayOfWeek()

একটি date বা datetime মান থেকে সপ্তাহের দিন প্রদান করে। উদাহরণস্বরূপ: dayOfWeek(date "2009-02-26") 5 প্রদান করে। মনে রাখবেন দিনগুলি 1-ভিত্তিক, তাই ফাংশনটি রবিবারের জন্য 1, সোমবারের জন্য 2 ইত্যাদি প্রদান করে।

পরামিতি: date বা datetime টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: number
now()

GMT টাইমজোনে বর্তমান datetime প্রতিনিধিত্ব করে একটি তারিখ সময় মান প্রদান করে।

পরামিতি: কোনোটিই নয়
রিটার্ন টাইপ: datetime
dateDiff()

দুটি date বা datetime মানের মধ্যে দিনের পার্থক্য প্রদান করে। দ্রষ্টব্য: শুধুমাত্র মানের date অংশগুলি গণনায় ব্যবহার করা হয় এবং এইভাবে ফাংশনটি সর্বদা একটি পূর্ণসংখ্যা মান প্রদান করে। উদাহরণস্বরূপ: dateDiff(date "2008-03-13", date "2008-02-12") 29 প্রদান করে; dateDiff(date "2009-02-13", date "2009-03-13") -29 প্রদান করে। সময়ের মান তুলনা করার আগে ছোট করা হয়।

পরামিতি: date বা datetime প্রকারের দুটি পরামিতি (প্রতিটির একটি হতে পারে)
রিটার্ন টাইপ: number
toDate()

প্রদত্ত মানটিকে একটি date মানতে রূপান্তরিত করে।

  • একটি date দেওয়া হলে, এটি একই মান প্রদান করে।
  • একটি datetime দেওয়া, এটি date অংশ প্রদান করে। উদাহরণস্বরূপ: toDate(dateTime "2009-01-01 12:00:00") "2009-01-01" প্রদান করে।
  • একটি number N দিলে, এটি Epoch-এর পরে একটি date N মিলিসেকেন্ড প্রদান করে। যুগকে 1 জানুয়ারী, 1970, 00:00:00 GMT হিসাবে সংজ্ঞায়িত করা হয়েছে। উদাহরণস্বরূপ: toDate(1234567890000) "2009-02-13" প্রদান করে।
পরামিতি: date , datetime , বা number টাইপের একটি প্যারামিটার
রিটার্ন টাইপ: date
upper()

বড় হাতের অক্ষরে প্রদত্ত string প্রদান করে। যেমন: upper("foo") "FOO" প্রদান করে।

পরামিতি: টাইপ string এর একটি প্যারামিটার
রিটার্ন টাইপ: string
lower()

ছোট হাতের অক্ষরে প্রদত্ত string প্রদান করে। উদাহরণস্বরূপ: lower("Bar") "বার" প্রদান করে।

পরামিতি: টাইপ string এর একটি প্যারামিটার
রিটার্ন টাইপ: string

পাটিগণিত অপারেটর

আপনি গাণিতিক অপারেটর ব্যবহার করতে পারেন যে কোনও কিছুর উপর গাণিতিক ক্রিয়াকলাপ সম্পাদন করতে যা একক সংখ্যার (অর্থাৎ উপযুক্ত সমষ্টিগত ফাংশন, অপারেটর বা ধ্রুবকগুলির আউটপুট)।

উদাহরণ:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

নিম্নলিখিত অপারেটর সংজ্ঞায়িত করা হয়:

নাম বর্ণনা পরামিতি রিটার্ন টাইপ
+ দুটি number মানের যোগফল প্রদান করে। দুই number এস number
- দুটি number মানের মধ্যে পার্থক্য প্রদান করে। দুই number এস number
* দুটি number s এর গুণফল প্রদান করে। দুই number এস number
/ দুটি number s এর ভাগফল প্রদান করে। শূন্য দ্বারা বিভাজন শূন্য রিটার্ন. দুই number এস number

ভাষার উপাদান

আক্ষরিক

লিটারেল হল তুলনা বা অ্যাসাইনমেন্টের জন্য ব্যবহৃত মান। আক্ষরিক string s, সংখ্যা, বুলিয়ান মান, বা বিভিন্ন তারিখ/সময় প্রকার হতে পারে। এখানে ক্যোয়ারী সিনট্যাক্সে ব্যবহৃত আক্ষরিক কিছু উদাহরণ রয়েছে:

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

এখানে প্রতিটি ধরনের আক্ষরিক জন্য বিন্যাস আছে:

string
একটি string লিটারেল একক বা ডবল উদ্ধৃতিতে আবদ্ধ হওয়া উচিত। উদাহরণ: "fourteen" 'hello world' "It's raining"
number
সংখ্যাসূচক আক্ষরিক দশমিক স্বরলিপি নির্দিষ্ট করা হয়. উদাহরণ: 3 3.0 3.14 -71 -7.2 .6
boolean
বুলিয়ান আক্ষরিক হয় true বা false
date
yyyy-MM-dd বিন্যাসে একটি string আক্ষরিক দ্বারা অনুসরণ করে কীওয়ার্ড date ব্যবহার করুন। উদাহরণ: date "2008-03-18"
timeofday
HH:mm:ss[.SSS] ফরম্যাটে একটি string লিটারেল অনুসরণ করে timeofday কীওয়ার্ডটি ব্যবহার করুন উদাহরণ: timeofday "12:30:45"
datetime
একটি তারিখ এবং একটি সময়, হয় কীওয়ার্ড datetime বা কীওয়ার্ড timestamp ব্যবহার করে yyyy-MM-dd HH:mm:ss[.sss] বিন্যাসে একটি string লিটারেল অনুসরণ করে। উদাহরণ: datetime '2008-03-18 12:30:34.123'

শনাক্তকারী

আইডেন্টিফায়ার (বা আইডি) হল টেক্সট string যা কলাম সনাক্ত করে।

গুরুত্বপূর্ণ: যদি আপনার শনাক্তকারী

  • স্পেস আছে,
  • একটি সংরক্ষিত শব্দ ,
  • আলফানিউমেরিক অক্ষর বা আন্ডারস্কোর ([a-zA-Z0-9_]), অথবা
  • একটি অঙ্ক দিয়ে শুরু হয়

এটি অবশ্যই ব্যাক-কোট দ্বারা বেষ্টিত হতে হবে (একক উদ্ধৃতি নয়)।

অন্যথায়, আপনার শনাক্তকারীকে উদ্ধৃত করার প্রয়োজন নেই। (উল্লেখ্য যে সিনট্যাক্স দ্বারা সংজ্ঞায়িত সমস্ত কীওয়ার্ড সংরক্ষিত শব্দ নয়; তাই, উদাহরণস্বরূপ, আপনি "সর্বোচ্চ" একটি শনাক্তকারী হিসাবে ব্যবহার করতে পারেন, এটিকে ব্যাক-কোট না করেও।)

উদাহরণ: col1 employee_table `start date` `7 days traffic` `select`

আমরা একটি শনাক্তকারী বেছে নেওয়ার বিরুদ্ধে সুপারিশ করি যার জন্য ব্যাক-কোট প্রয়োজন, কারণ ব্যাক-কোটগুলি ব্যবহার করা ভুলে যাওয়া বা ভুলবশত `ব্যাক-কোটস` এর পরিবর্তে 'একক উদ্ধৃতি' ব্যবহার করা সহজ হতে পারে। এগুলি সাধারণ ভুল এবং প্রায়ই ডিবাগ করা কঠিন৷

কেস সংবেদনশীলতা

আইডেন্টিফায়ার এবং স্ট্রিং লিটারেল কেস-সংবেদনশীল। অন্যান্য সমস্ত ভাষা উপাদান কেস-সংবেদনশীল।

সংরক্ষিত শব্দ

একটি শনাক্তকারী হিসাবে ব্যবহার করা হলে নিম্নলিখিত সংরক্ষিত শব্দগুলি অবশ্যই পিছনে উদ্ধৃত করা উচিত:

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where