tgindex
Lazizjon Tech
@lazizjontechузбекский

Bu kanal asosan IT sohasining aynan AI va Data yo'nalishidagi Engineer va Analytics bo'lishni xohlaganlar uchun o'z bilim ko'nikmalarim va tajribamni bo'lishib boraman. Biznesni raqamlashtirish! feedback va takliflar eshitish uchun: @lazizrakhmat

Последний пост
27 апр.
Последнее чтение
13 авг.
Постов за неделю
0
Всего постов
20
Тип
открытый
Язык
узбекский
В каталоге с
13 авг.
Подписчики
94
0 за 2 дн.
Сутки
0
0,00%
Неделя
 
Месяц
 
Просмотров на пост
199
20 постов
Вовлечённость
211,7%
к подписчикам
Постов в день
0,0
всего 20
Упоминаний
2
каналов
Охват размещения
оценка
1/24сутки в ленте
1/48двое суток
1/72трое суток

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • 2000: SQL → get a job 2005: SQL + Excel → get a job 2010: SQL + Excel + Python → get a job 2015: SQL + Excel + Python + Stats → get a job 2020: SQL + Excel + Python + Stats + ML → get a job 2026: SQL + Excel + Python + Stats + ML + + LLMs + 5 YoE + MLOps + AI Agents + System Design + Domain Expertise + Ownership mindset + Communication Skills + Business Understanding + Cloud (AWS + GCP + Azure) → get a Entry-level job Not much time ago... "entry-level" meant 0 years of experience. If you’re feeling overwhelmed, you’re not alone. The bar didn’t just rise… it multiplied.

  • Bu natijaga kelguniga qadar nimalarni boshdan kechirganimni o'qing ancha tajribangizni kutarib olasiz ishonavering, keyingi postda tushunarli end to end qilib yozaman. @lazizjontech

  • Men 775 taga yaqin suhbat o'tkazdim. Mana eng ko'p uchraydigan xatolar: Salom, aziz nomzodlar va recruiterlar — umid qilamanki, bu ikkalangiz uchun ham tanish va foydali bo'ladi. Bu men EPAM Campus'da 775 ta suhbat o'tkazganimdan keyin o'z ko'zlarim bilan ko'rgan narsalarim. Shuni payqadimki, ko'p nomzodlar "mukammal" ko'rinishga harakat qilishadi — lekin bu ko'pincha ularga zarar beradi. Mana eng ko'p takrorlanadigan holatlar: 1. "Meni hamma narsa qiziqtiradi" deyish Agar men sizdan Data Analytics bo'yicha suhbat otsam, siz esa "aslida menga Data Science yoqadi" desangiz — bu savol tug'diradi. Data Science yomon emas, aksincha zo'r. Lekin men o'ylab qolaman: "Bu o'qishga siz haqiqatan ham kirishni xohlaysizmi?" 🤔 Bir nechta qiziqishingiz bo'lishi — bu mutlaqo normal. Lekin suhbat paytida aynan shu lavozimga nima uchun kelganingizni aniq ko'rsating ✅ 2. Yodlangan nutq so'zlash "O'zingiz haqingizda gapirib bering" desam, 4 daqiqalik yodlangan monolog kutmayman. Ba'zi nomzodlar shunchalik "tayyor" gapiradilarki, suhbat emas, spektakl bo'lib qoladi. Suhbat — bu ikki odamning oddiy muloqoti, sahna emas ✅ 3. "Men idealman" deb ko'rsatishga urinish Ko'pchilik juda rasmiy, juda ehtiyotkor, juda asabiy bo'lib qoladi. Lekin haqiqat shuki — agar recruiter siz bilan bog'langan bo'lsa, demak siz allaqachon muhim talablarga javob berasiz va biz sizda potensial ko'rdik. Aks holda, suhbatni umuman belgilamasdik. Biz sizni "qo'lga tushirmoqchi" emasmiz — biz sizni o'qishga qabul qilishga yordam berishni xohlaymiz. Shuning uchun biroz bo'shashing ,O'zingiz bo'ling. Savol bering — hatto g'ayrioddiy savollar ham bo'lsa. Eng yaxshi suhbatlar ko'pincha shunday bo'ladi: ikki odam bu imkoniyat to'g'ri ekanligini birgalikda tekshirib ko'radi. Ba'zida eng kuchli nomzod — eng "sayqallangan" javob beradigan emas, balki samimiy, qiziquvchan va halol bo'lgan odamdir. Katta muhabbat bilan, #EPAMCampus Original post: here @lazizjontech

  • Channel name was changed to «Lazizjon Tech»

  • Data Analytics propaganda I'm not falling for: 1. Data Analysts should strive to be Data Scientists 2. If you're not using Python, you're not technical 3. You need a master's degree to break into data 4. You have to know every tool and language 5. Tech is the best industry to work in 6. You don't need to know any math 7. Data analysts just make reports 8. It's an easy work from home job 9. Excel isn't a real data tool 10. SQL is dead It’s 2026… let’s stop falling for these!!! ——————————————— Men ma'lumotlar tahlili targ'ibotiga ishonmayman: 1. Ma'lumotlar tahlilchilari ma'lumotlar olimi bo'lishga intilishlari kerak 2. Agar siz Pythondan foydalanmasangiz, siz texnik emassiz 3. Ma'lumotlarni tahlil qilish uchun sizga magistr darajasi kerak 4. Siz har bir vosita va tilni bilishingiz kerak 5. Texnologiya ishlash uchun eng yaxshi soha 6. Siz hech qanday matematikani bilishingiz shart emas 7. Ma'lumotlar tahlilchilari shunchaki hisobotlar tuzishadi 8. Bu uy ishi kabi oson ish 9. Excel haqiqiy ma'lumotlar vositasi emas 10. SQL o'ldi 2026-yil... keling, bunga aldanishni bas qilaylik!!! @lazizjontech

  • Bu loyiha menga Power BI’da ishlash faqat vizual chizish emasligini yana bir bor ko‘rsatdi va agar sen junior bo‘lsang, shu hikoya senga juda foydali bo‘ladi. Ishni boshlaganimizda bizda SQL Server’da kreditlar bo‘yicha katta jadval bor edi va Power BI’da…

  • 2 hafta vaqtim ketdi bu Loan Portfelni yasashga xaliroq to'liq tajribani bo'lishaman, qilgan xatolarim, business case, talablar, va hamma hammasini to'liqroq tushuntiraman nega bunchalik soddaligini ham. @lazizjontech

  • 2 hafta vaqtim ketdi bu Loan Portfelni yasashga xaliroq to'liq tajribani bo'lishaman, qilgan xatolarim, business case, talablar, va hamma hammasini to'liqroq tushuntiraman nega bunchalik soddaligini ham. @lazizjontech

  • Power BI uchun standby jadval yaratish – mening tajribam So‘nggi paytlarda Power BI bilan ishlashda bir muammo yuzaga keldi: har oy katta hajmdagi Excel fayllari keladi, ularni to‘g‘ri analiz qilish kerak, lekin ma’lumotlar turli formatlarda, ba’zilari null, ba’zilari noto‘g‘ri kodlar bilan keladi. Men o‘zimga shunday bir vazifa oldim: Excel ma’lumotlarini Power BI uchun tayyorlash, original jadvalni saqlash va report uchun tayyor standby jadval yaratish. Boshlanishi Avvalo, Excel faylini SQL Server’ga yukladim (dbo.portfelbi2025). Lekin ma’lumotlar bilan muammolar bor edi: Pul summalari nvarchar formatida edi, decimal bo‘lishi kerak. Sanalar va raqamlar aralash edi. code_client noto‘g‘ri kesib olinayotgan edi (oldidagi 0 yo‘qolib ketgan). Qiyinchiliklar Birinchi urinishlar xatolik bilan tugadi: nvarchar → decimal konvertatsiyasida xatoliklar paydo bo‘ldi. Duplicate key error paydo bo‘ldi, chunki standby jadvalni yangilashga urinib edim. NULL qiymatlar Power BI’da 0 ko‘rinishida ishlashini istadim, lekin summalarni o‘zgartirmasdan saqlash kerak edi. Qilgan ishlarim 1️⃣ Pul summalari nvarchar formatda edi, shuning uchun hisob-kitob mumkin emas edi. 2️⃣ NULL qiymatlarni yangi ustunga nusxaladim, Power BI’da 0 sifatida ishlashi uchun. 3️⃣ Кредитный_счет dan to‘g‘ri code_client kesib oldim: Masalan, 15101840200126023600 → 04540219 4️⃣ Standby database yaratdim (portfelbi_standby) va yangi jadval (portfelbi_std) tayyorladim. 5️⃣ PRIMARY KEY va indekslar qo‘shdim, shunda Power BI reportlari tez ishlaydi. 6️⃣ Barcha xatoliklarni tuzatdim: duplicate key, data type error, SELECT va INSERT ustunlarini moslashtirdim. Natija 1M+ satr ma’lumot Power BI uchun tayyor. Summalar va code_client to‘g‘ri formatda. NULL qiymatlar alohida ustunda saqlangan. Original ma’lumot saqlanib, xavfsizlik kafolatlangan Saboq Data type va null qiymatlar bilan ehtiyot bo‘lish shart. Standby jadval yaratish – katta ma’lumotlar bilan ishlashda muhim. Har bir o‘zgarish script bilan avtomatlashtirilsa, keyingi oylar uchun ish oson bo‘ladi. Bu tajriba menga shuni ko‘rsatdi: katta va chalkash ma’lumotlarni boshqarish – bu nafaqat SQL bilim, balki tizimli ETL jarayoni yaratish. Keyingi qadam: bu standby jadvalni Power BI bilan integratsiya qilish va avtomatik refresh-ready ETL yaratish. @lazizjontech

  • dbt nima va u nega kerak? Ko‘p joyda data bor, lekin: hisobotlar har xil chiqadi va bitta KPI turli jamoada turlicha hisoblanadi. Ammo “qaysi SQL to‘g‘ri?” degan savol tug‘iladi. Mana shu muammoni dbt hal qiladi. dbt (Data Build Tool) — bu SQL orqali datani tozalash, tartiblash va tayyor holga keltirish uchun ishlatiladigan vosita. Oddiy qilib aytganda: dbt — bu raw data ni olib, analitika va dashboard uchun ishonchli data qilib beradigan tool. dbt qanday ishlaydi? 1. Data bazaga keladi (CRM, app, bank tizimi va h.k.) 2. dbt ichida SQL yoziladi 3. dbt bu SQL’ni: - jadval yoki view ga aylantiradi - qaysi jadval qaysisiga bog‘liqligini biladi - xatoni tekshiradi Natijada: siz toza, tushunarli va bir xil hisoblangan data. dbt nimasi bilan yaxshi? Faqat SQL — murakkab kod yo‘q Data test qilinadi (null, duplicate yo‘qmi?) Hamma KPI bitta joyda hisoblanadi Documentation avtomatik chiqadi dbt kimlar uchun? Data Analyst -> next level ga chiqasiz Product Analyst Data Engineer BI va Dashboard qiluvchilar uchun juda foydali Ayniqsa jamoa bo‘lib ishlaydigan joylar uchun juda qulay. Nega dbt GitHub bilan ishlaydi? Chunki dbt — bu kod. GitHub orqali: - kim nima o‘zgartirganini ko‘rasiz - xatolarni tez topasiz - jamoa bilan tartibli ishlaysiz Ya’ni dbt + GitHub = professional data workflow dbt — bu SQL’ni shunchaki query emas, ishonchli data mahsulotiga aylantiradigan vosita. @lazizjontech

  • Yangi Odoo texnalogiyasini o'rganishni boshladim va bu yo'nalishda ham o'z fikr va tajribalarimni berib boraman. Odoo — bu shunchaki dastur emas, balki biznesni boshqarish uchun yaratilgan ulkan bir ekotizim. Agar qisqa qilib aytsam, Odoo hozirgi kunda kichik va o'rta biznes (SME) uchun eng moslashuvchan va hamyonbop ERP (Enterprise Resource Planning) tizimi hisoblanadi. AI (Sun'iy intellekt) davri boshlangani esa Odoo uchun xavf emas, balki ulkan imkoniyat eshigini ochdi. 1. Odoo va AI: Yangi davr boshlanishi Odoo allaqachon o'z tizimiga AI funksiyalarini integratsiya qilishni boshlagan. Bu texnologiya quyidagi yo'nalishlarda Odooning muhimligini oshiradi: Avtomatlashtirish (OCR): AI yordamida skaner qilingan cheklar yoki hisob-fakturalarni (invoices) avtomatik ravishda tizimga kiritish. Bu buxgalteriya ishlarini 80-90% ga tezlashtiradi. Bashorat qilish (Predictive Analytics): AI sotuvlar tarixini tahlil qilib, kelajakda qancha mahsulot kerak bo'lishini yoki qaysi mijoz ketib qolishi mumkinligini (churn prediction) oldindan aytib bera oladi. Chatbotlar va Mijozlar bilan aloqa: Odoo ichidagi Live Chat tizimi AI yordamida mijozlarga inson aralashuvisiz javob qaytarish darajasiga yetmoqda. 2. Nima uchun Odoo kelajakda yanada muhimroq bo'ladi? AI davrida ma'lumotlar — bu yangi "neft". Odooning kuchi shundaki, u barcha ma'lumotlarni (sotuv, ombor, moliya, HR) bitta bazada jamlaydi. Ma'lumotlar yaxlitligi: AI samarali ishlashi uchun unga toza va tartibli ma'lumot kerak. Odoo barcha biznes jarayonlarni bitta joyda birlashtirgani uchun, AI modelini o'qitish va qo'llash boshqa tarqoq tizimlarga qaraganda osonroq. Ochiq kodli (Open Source) tabiat: Odoo ochiq kodli bo'lgani uchun, dasturchilar unga istalgan AI modelini (masalan, OpenAI yoki maxsus tayyorlangan modellarni) osongina ulashlari mumkin. 3. Odooning kelajakdagi o'rni Kelajakda bizneslar shunchaki ma'lumot yig'uvchi emas, balki "Aqlli boshqaruv" tizimlariga muhtoj bo'lishadi. Odoo bu borada quyidagi ustunliklarga ega: Xususiyat — Kelajakdagi ahamiyati 1. Moslashuvchanlik - Biznes o'zgarishi bilan Odoo ham oson o'zgaradi. 2. Integratsiya - Minglab modullar bir-biri bilan "gaplasha" oladi. 3. Arzon narx - SAP yoki Oracle kabi gigantlarga qaraganda ancha arzon va tezroq joriy qilinadi. Odoo — bu kelajakning "Biznes operatsion tizimi". AI sferasining rivojlanishi Odooni yanada aqlliroq va inson omiliga kamroq bog'liq qiladi. Agar siz biznesingizni raqamlashtirmoqchi bo'lsangiz yoki ushbu sohada mutaxassis bo'lishni xohlasangiz, Odoo hozirda eng to'g'ri tanlovlardan biridir. Kelajakda Odoo shunchaki "hisob-kitob dasturi" bo'lib qolmay, biznes egalariga strategik maslahatlar beradigan AI-yordamchiga aylanadi. @lazizjontech

  • #SQL_DARSLARI_13_QISM FOREIGN KEY haqida gap ketganda referential integrity (ma’lumot yaxlitligi) haqida tushunamiz. Yanayam aniqroq aytsak ikki jadvalni bir-biri bilan bog’liqligi aynan bitta qiymatga bog’liqligida. Buni odatda Parent-child relationship deyishadi. Endi tasavvur qiling, parent jadvaldan bir qiymatni o’chirib yuborsaku, child jadvaldagi unga bog’langan qiymatlar nima qiladi? Qiymat o’chirib yuborilganida nima qilishi kerak? degan savol bor. Bu muammoni yechish uchun biz odatda ularga bog’lanishda qoidalar berib o’tishimiz kerak ya’ni ON DELETE <nima bo’lsin?> tarzida. Misol uchun qiymat o’chsa bog’liq qiymatlar ham o’chib ketsin, yoki NULL bo’lib qolsin yoki hech nima bo’lmasin degan. CREATE TABLE user ( id BIGSERIAL PRIMARY KEY, ... ) CREATE TABLE product ( id BIGSERIAL PRIMARY KEY, user_id BIGINT, name VARCHAR(50), ... FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE <ACTION> ); <ACTION> qismiga u o’chirilganda nima qilishi kerakligini quydagicha tasvirlashimiz mumkin: RESTRICT — parent element o’chib ketish oldini oladi agar kamida 1ta child element bo’lsa. NO ACTION — standart (defaukt) qiymat xisoblanadi. RESTRICTga o’xshab ketadi ammo yagona farqi transaction tugashini kutadi. (RESTRICT esa darxol o’chirishni oldini oladi.) CASCADE — agar parent row o’chsa, unga bog’langan child row’lar ham o’chishi kerakligini aytadi. SET NULL — parent row o’chsa, child row’dagi foreign key bo’lgan qator qiymati NULL bo’lib qoladi. SET DEFAULT — child row qiymati default qiymatiga o’zgaradi (uni table tuzishda aytgan bo’lishingiz kerak) Qachon qay birini ishlatish kerak? Agar child row’lar parent row’larsiz ma’noga ega bo’lmay qolsa ularni o’chirish kerak. Agar ma’nosi yo’qolmasa va u ma’lumotlar sizga kerak bo’lsa ularni saqlab qolish, NULL yoki DEFAULT qiymatga o’zgartirib qo’yish kerak. @lazizjontech

  • #SQL_DARSLARI_12_QISM DELETE FROM talaba WHERE yosh < 18; Bu buyruq faqat yosh < 18 bo‘lgan satrlarni o‘chiradi. DELETE FROM buyrug’ida filtrlash (WHERE) imkoniyatiga ega bo’lasi. Agar barcha satrlarni o‘chirmoqchi bo‘lsang WHERE ni unutib qo’ysangiz bas: DELETE FROM talaba; Ammo bu holatda har bir satr alohida o‘chadi, shuning uchun katta jadvallarda sekin ishlaydi. TRUNCATE TABLE talaba; Bu buyruq barcha satrlarni birdan o‘chiradi. U juda tez ishlaydi. U aslida jadvalni bo‘sh holatga keltiradi, lekin strukturani saqlab qoladi (ustunlar, cheklovlar, indekslar o‘chmaydi). Ehtiyot bo’ling - TRUNCATE juda xavfli — uni bajarganingdan so‘ng ma’lumotni tiklash qiyin. - DELETE esa xavfsizroq, chunki uni ROLLBACK bilan qaytarish mumkin (agar TRANSACTION ishlatilsa). @lazizjonblog

  • #SQL_DARSLARI_11_QISM ALTER TABLE SQLda mavjud jadvalning tuzilmasini o‘zgartirish uchun ishlatiladi. U orqali ustun (column) qo‘shish, o‘chirish, nomini o‘zgartirish, ma’lumot turini almashtirish yoki cheklov (constraint) qo‘shish mumkin. 1. Ustun qo‘shish ALTER TABLE talaba ADD COLUMN yosh INT; Bu talaba jadvaliga yangi yosh nomli butun son (integer) ustun qo‘shadi. 2. Ustunni o‘chirish ALTER TABLE talaba DROP COLUMN yosh; Endi yosh ustuni jadvaldan butunlay o‘chiriladi. Yodingizda tuting, bor ma’lumotlar ham birga tashlab yuboriladi. 3. Ustunning nomini o‘zgartirish ALTER TABLE talaba RENAME COLUMN ism TO toliq_ism; ism ustunining nomi toliq_ism deb o‘zgaradi. Bu buyruq ba’zi SQL texnologiyalarida (masalan, MySQL eski versiyalarida) boshqacha ishlashi mumkin. 4. Ustun turini o‘zgartirish ALTER TABLE talaba ALTER COLUMN yosh TYPE SMALLINT; yosh ustunining ma’lumot turi SMALLINTga o‘zgartiriladi. Ma’lumot turlari o‘zaro mos bo‘lishi kerak, aks holda xatolik bo‘ladi. 5. Ustunga NOT NULL yoki DEFAULT qiymat qo‘shish ALTER TABLE talaba ALTER COLUMN yosh SET NOT NULL; Endi yosh ustuni bo‘sh qiymatni qabul qilmaydi. Yoki: ALTER TABLE talaba ALTER COLUMN yosh SET DEFAULT 18; Agar yangi satr kiritilsa va yosh ko‘rsatilmasa, avtomatik 18 yoziladi. 6. Constraint qo‘shish ALTER TABLE talaba ADD CONSTRAINT pk_talaba PRIMARY KEY (id); id ustuni endi asosiy kalit (PRIMARY KEY) bo‘ladi. 7. Cheklovni o‘chirish ALTER TABLE talaba DROP CONSTRAINT pk_talaba; Yuqorida qo‘shilgan cheklov olib tashlanadi. 8. Jadval nomini o‘zgartirish ALTER TABLE talaba RENAME TO student; Endi jadval nomi student bo‘ladi. Ko‘p hollarda bir nechta o‘zgarishni bir joyda bajarish mumkin: ALTER TABLE student ADD COLUMN kurs INT, ADD COLUMN fakultet VARCHAR(100), ALTER COLUMN toliq_ism SET NOT NULL; Bir buyruq bilan bir nechta ustun qo‘shildi va mavjud ustun sharti o‘zgardi. @lazizjontech

  • #SQL_DARSLARI_10_QISM Bir-birga (One-to-One) Ikkita jadval orasidagi bog'liqlik bo'lib, birinchi jadvaldagi har bir yozuv ikkinchi jadvaldagi faqat bitta yozuv bilan bog'lanadi va aksincha. Misol: Har bir fuqaroning bitta pasporti, har bir pasport faqat bitta fuqaroga tegishli. Bir-ko'pga (One-to-Many) Birinchi jadvaldagi bitta yozuv ikkinchi jadvaldagi bir nechta yozuvlar bilan bog'langan, lekin ikkinchi jadvaldagi har bir yozuv faqat birinchi jadvaldagi bitta yozuvga bog'langan holatdagi bog'liqlik. Misol: Bir bo'limda ko'p xodimlar ishlashi mumkin, lekin har bir xodim faqat bitta bo'limda ishlaydi. Ko'p-ko'pga (Many-to-Many) Birinchi jadvaldagi har bir yozuv ikkinchi jadvaldagi bir nechta yozuvlar bilan bog'langan va ikkinchi jadvaldagi har bir yozuv ham birinchi jadvaldagi bir nechta yozuvlar bilan bog'langan bo'ladi. Misol: Talaba bir nechta fanlarni o'qiydi, har bir fan bir nechta talabalar tomonidan o'qiladi. Bog'liqliklarni Amalga Oshirish Bir-birga: Birinchi jadvalning asosiy kaliti ikkinchi jadvalda chet kalit sifatida ishlatiladi, yoki alohida bog'lovchi jadval yaratiladi. Bir-ko'pga: "Ko'p" tomonidagi jadvalda "bir" tomonidagi jadvalning asosiy kaliti chet kalit sifatida saqlanadi. Ko'p-ko'pga: Bu bog'liqlikni amalga oshirish uchun odatda uchinchi bog'lovchi jadval (junction table) yaratiladi. Bu jadvalda ikki jadvalning ham asosiy kalitlari chet kalit sifatida saqlanadi. Afzalliklar - Ma'lumotlar takrorlanishini kamaytiradi - Ma'lumotlar yaxlitligini ta'minlaydi - Samarali so'rovlar tuzish imkonini beradi - Ma'lumotlar bazasi hajmini optimallashtiradi @lazizjontech

  • #SQL_DARSLARI_9_QISM 1. EXCEPT operatori EXCEPT operatori teskari ishlaydi: birinchi so‘rovda bor, lekin ikkinchisida yo‘q bo‘lgan qatorlarni qaytaradi. -- Faqat mijozlar bor, lekin yetkazib beruvchilar yo‘q bo‘lgan shaharlar SELECT city FROM customers EXCEPT SELECT city FROM suppliers; Yoki: -- Sotuvda bor, lekin hali buyurtma qilinmagan mahsulotlar SELECT product_id FROM products EXCEPT SELECT product_id FROM orders_details; Qachon ishlatish kerak: Farqni topish kerak bo‘lganda, ya’ni “bir joyda bor, ikkinchisida yo‘q” vaziyatlarda. 2. GROUPING SETS GROUPING SETS sizga bir so‘rovda bir nechta turli GROUP BY natijalarini olish imkonini beradi. Bu xuddi bitta SQL’da bir nechta pivot jadvalni birlashtirgandek. SELECT region, product_category, SUM(sales) AS total_sales FROM sales GROUP BY GROUPING SETS ( (region, product_category), -- hudud va mahsulot turi bo‘yicha (region), -- faqat hudud bo‘yicha (product_category), -- faqat mahsulot turi bo‘yicha () -- jami umumiy yig‘indi ); Qachon ishlatish kerak: Bir necha o‘lchovlarda jamlama hisobot kerak bo‘lganda (masalan, hudud, mahsulot, va umumiy darajada). 3. GROUPING SETS GROUPING SETS sizga bir so‘rovda bir nechta turli GROUP BY natijalarini olish imkonini beradi. Bu xuddi bitta SQL’da bir nechta pivot jadvalni birlashtirgandek. SELECT region, product_category, SUM(sales) AS total_sales FROM sales GROUP BY GROUPING SETS ( (region, product_category), -- hudud va mahsulot turi bo‘yicha (region), -- faqat hudud bo‘yicha (product_category), -- faqat mahsulot turi bo‘yicha () -- jami umumiy yig‘indi ); Qachon ishlatish kerak: Bir necha o‘lchovlarda jamlama hisobot kerak bo‘lganda (masalan, hudud, mahsulot, va umumiy darajada). 4. CUBE operatori CUBE — bu barcha mumkin bo‘lgan kombinatsiyalarni guruhlaydi. U sizga har bir ustun kombinatsiyasi bo‘yicha jamni hisoblaydi. SELECT region, product, year, SUM(sales) AS total_sales FROM sales GROUP BY CUBE(region, product, year); Bu natijada quyidagilarni beradi: - Har bir (region, product, year) kombinatsiyasi, - Har bir (region, product), - Har bir (product, year), - Har bir (region, year), - Va umumiy yig‘indi (hammasining jami). Qachon ishlatish kerak: Ko‘p o‘lchovli hisobotlar uchun masalan, savdo tahlili, BI (Business Intelligence), yoki OLAP tizimlarda. ROLLUP operatori ROLLUP — CUBE’ga o‘xshaydi, lekin u faqat ierarxik tartibda jamlaydi. Bu “pastdan yuqoriga” yig‘indi chiqaruvchi usul. -- Mamlakat → Viloyat → Shahar bo‘yicha sotuvlar SELECT country, region, city, SUM(sales) AS total_sales FROM sales GROUP BY ROLLUP(country, region, city); Natijada siz: - Har bir shahar bo‘yicha yig‘indi, - Har bir region bo‘yicha jami, - Har bir country bo‘yicha jami, - Va umumiy jami ko‘rasiz. Yoki vaqt bo‘yicha: SELECT year, quarter, month, SUM(revenue) AS total_revenue FROM financial_data GROUP BY ROLLUP(year, quarter, month); Qachon ishlatish kerak: Ierarxik (yil → chorak → oy) yoki geografik (mamlakat → viloyat → shahar) kesimlarda umumlashma hisobot chiqarishda. @lazizjonblog

  • #SQL_DARSLARI_8_QISM WHERE alohida qatorlarni filtrlasa, HAVING butun guruhlarni agregat funksiya natijasi bo'yicha filtrlaydi. U har doim GROUP BY dan keyin yoziladi. Masalan, faqat 5 tadan ko'p post yozgan avtorlarni topish: author_id, COUNT(*) AS post_count FROM posts GROUP BY author_id HAVING COUNT(*) > 5; Farqi: WHERE guruhlashdan oldin ishlaydi, HAVING esa guruhlashdan va agregat funksiyalar hisoblanishidan keyin ishlaydi. SQL’ning ilg‘or funksionalliklaridan foydalanish Asosiy SELECT, INSERT, UPDATE, DELETE amallarini bilish — bu boshlanish. Ammo haqiqiy ma’lumotlar tahlili uchun SQL’da ilg‘or operatorlar bor: ular sizga turli jadvallardan ma’lumotni birlashtirish, solishtirish, yoki turli darajalarda guruhlash imkonini beradi. Eng muhimlari: UNION, INTERSECT, EXCEPT, GROUPING SETS, CUBE, va ROLLUP. @lazizjontech

  • #SQL_DARSLARI_7_QISM Bu funksiyalar har bir guruh uchun bitta qiymatni hisoblab beradi. COUNT(): Guruhdagi qatorlar soni. SUM(): Guruhdagi qiymatlar yig'indisi. AVG(): O'rtacha qiymat. MAX(): Eng katta qiymat. MIN(): Eng kichik qiymat. author_id, COUNT(*) AS post_count -- COUNT(*) har bir guruhdagi qatorlarni sanaydi FROM posts GROUP BY author_id; AS post_count – bu natijaviy ustunga chiroyli nom berish (Alias). Natija taxminan shunday bo'ladi: author_id | post_count @lazizjontech @lazizjontech

  • #SQL_DARSLARI_6_QISM Ba'zida bizga alohida qatorlar emas, balki ularning guruhlari haqida umumiy ma'lumot kerak bo'ladi. GROUP BY qatorlarni bir xil qiymatga ega ustunlar bo'yicha guruhlaydi. Masalan, student jadvalidan nechta talaba aktiv va nechtasi aktiv emasligini guruhlaymiz va COUNT() funksiyasi yordamida har bir guruh uchun talabalar sonini hisoblaymiz: SELECT is_active, COUNT(*) AS soni FROM student GROUP BY is_active; GROUP BY ishlatilganda, SELECT qismida faqat guruhlangan ustun (is_active) yoki agregat funksiyalar (COUNT(), SUM(), AVG() va boshqalar) bo'lishi mumkin. SELECT city, COUNT(*) AS soni FROM student GROUP BY city; @lazizjontech

  • #SQL_DARSLARI_5_QISM Har qanday ma’lumotlar bazasi faqat ma’lumotni saqlab qolish uchun emas, balki uni to‘g‘ri saqlash uchun ham xizmat qiladi. PostgreSQL’da buning uchun constraints (cheklovlar) degan mexanizm bor. Ularni bazadagi “qonunlar” deb tushunsa bo‘ladi ya'ni noto‘g‘ri yoki mantiqsiz ma’lumot kiritilishiga yo‘l qo‘ymaydi. Misol tariqasida, siz “mijozlar” jadvaliga ism maydoni bo‘sh bo‘lmasin, yosh manfiy bo‘lmasin, telefon raqami esa noyob bo‘lsin, deb qoidalar belgilashingiz mumkin. Shu tarzda baza o‘zini o‘zi himoya qiladi ya'ni noto'g'ri yoki yaroqsiz (invalid) qiymatlardan. Har bir jadvalda odatda bitta PRIMARY KEY bo‘ladi, u jadvaldagi har bir satrni noyobligni bildiradi. CREATE TABLE mijozlar ( id SERIAL PRIMARY KEY, ism TEXT, telefon TEXT ); UNIQUE constraint ustundagi qiymatlar takrorlanmasligini ta’minlaydi. Masalan, telefon raqam har bir mijozda alohida bo‘lishi (ya'ni bir-biriga o'xshash bo'lmasligi) kerak: telefon_raqam VARCHAR(20) UNIQUE Agar kimdir bazaga bir xil telefon bilan yana yozuv qo‘shmoqchi bo‘lsa, PostgreSQL bunga ruxsat bermaydi. Bu constraint noyoblikni kafolatlash uchun ishlatiladi (masalan, email, login, passport raqam lar uchun ajoyib tanlov). NOT NULL degani bu ustun bo‘sh (NULL) bo'lishi mumkinmas ya'ni bo'sh qoldirilmasligi kerak degani. Misol: ism TEXT NOT NULL Demak, ism ustuni har doim to‘ldirilgan bo‘lishi kerak. Bu constraint majburiy ma’lumotni ta’minlash uchun ishlatiladi. Masalan, foydalanuvchi ro‘yxatdan o‘tayotganda ismsiz bo‘lishi mantiqsiz, NOT NULL buni oldini oladi. CHECK constraint orqali siz ustundagi qiymatga ma’lum mantiqiy qoida qo‘yishingiz mumkin. Masalan, yosh manfiy bo‘lmasligi kerak, foydalanuvchi xisobi minus bo'lmasligi kerak: yosh INTEGER CHECK (yosh >= 0) xisob NUMERIC(30, 0) CHECK (xisob >= 0) CHECK bu ma’lumot sifatini himoya qiladi. Siz hatto murakkab ifodalarni ham qo‘yishingiz mumkin, masalan: CHECK (tugilgan_sana < CURRENT_DATE) Bu, ya’ni “tug‘ilgan sana kelajakda bo‘lmasin” degani. Ba’zan ustun uchun standart (default) qiymat kerak bo‘ladi, foydalanuvchi hech narsa kiritmasa ham, tizim avtomatik to‘ldiradi. status TEXT DEFAULT 'active' yaratilgan_vaqt TIMESTAMP DEFAULT CURRENT_TIMESTAMP Bu — qulaylik va soddalik uchun. DEFAULT yordamida siz doimiy qiymatlarni avtomatik qo‘yib, tizimni ishonchliroq qilasiz. Cheklovlar (Constraints) bu sizning bazangizni inson xatosidan himoya qiladi. Ular shunchaki texnik detal emas, balki axborot sifati va ishonchliligini ta’minlaydigan qatlamdir. 1. Xatolarni oldini oladi — noto‘g‘ri ma’lumot kirsa, baza uni qabul qilmaydi. 2. Dastur soddalashadi — ma’lumotni tekshirishni kodda emas, bazada bajaradi. 3. Barqarorlik oshadi — ma’lumotlar har doim izchil holatda saqlanadi. Batafsil: postgresql dokumentatsiyasi @lazizjontech