Pages

Wednesday, March 19, 2025

Групирање резултати со користење на GROUP BY, HAVING; Ограничување на бројот на редови во прашањето; Креирање прашања со спојување на две или повеќе табели во SQL

 

1. Групирање резултати со GROUP BY и HAVING

Во SQL, клаузулата GROUP BY се користи за групирање на резултатите според една или повеќе колони. Ова е корисно кога се работи со агрегатни функции како што се SUM(), AVG(), COUNT(), MAX(), MIN().

Синтакса:

SELECT колона1, колона2, агрегатна_функција(колона3)
FROM табела
GROUP BY колона1, колона2;

Пример:

SELECT категорија, COUNT(*) AS број_на_продукти
FROM продукти
GROUP BY категорија;

Ова пребарување ќе врати број на продукти во секоја категорија.

Користење на HAVING

Клаузулата HAVING се користи за филтрирање на групи откако GROUP BY ќе биде применет. WHERE не може да се користи со агрегатни функции, затоа се користи HAVING.

Пример:

SELECT категорија, COUNT(*) AS број_на_продукти
FROM продукти
GROUP BY категорија
HAVING COUNT(*) > 5;

Ова пребарување ќе врати само категории со повеќе од 5 продукти.

2. Ограничување на бројот на редови во прашањето

За ограничување на бројот на редови кои се враќаат, се користи LIMIT (во MySQL, PostgreSQL) или TOP (во SQL Server).

Синтакса (MySQL, PostgreSQL):

SELECT * FROM табела
LIMIT број_на_редови;

Пример:

SELECT * FROM нарачки
ORDER BY датум_нарачка DESC
LIMIT 10;

Ова пребарување враќа 10 најнови нарачки.

Синтакса (SQL Server):

SELECT TOP 10 * FROM нарачки ORDER BY датум_нарачка DESC;

3. Креирање прашања со спојување на две или повеќе табели

Во SQL, можеме да споиме податоци од повеќе табели со JOIN. Најчесто се користат INNER JOIN, LEFT JOIN, RIGHT JOIN, и FULL JOIN.

INNER JOIN

Ги враќа само оние редови каде што има совпаѓање помеѓу двете табели.

Пример:

SELECT клиенти.име, нарачки.датум_нарачка
FROM клиенти
INNER JOIN нарачки ON клиенти.ид_клиент = нарачки.ид_клиент;

LEFT JOIN

Ги враќа сите редови од левата табела и совпаѓачките од десната.

Пример:

SELECT клиенти.име, нарачки.датум_нарачка
FROM клиенти
LEFT JOIN нарачки ON клиенти.ид_клиент = нарачки.ид_клиент;

Ова враќа сите клиенти, дури и ако немаат нарачки.

RIGHT JOIN

Ги враќа сите редови од десната табела и совпаѓачките од левата.

Пример:

SELECT клиенти.име, нарачки.датум_нарачка
FROM клиенти
RIGHT JOIN нарачки ON клиенти.ид_клиент = нарачки.ид_клиент;

Ова враќа сите нарачки, дури и ако нема соодветен клиент.

FULL JOIN

Ги враќа сите редови од двете табели.

Пример:

SELECT клиенти.име, нарачки.датум_нарачка

FROM клиенти

FULL JOIN нарачки ON клиенти.ид_клиент = нарачки.ид_клиент;

Овие концепти се основа за работа со бази на податоци. GROUP BY и HAVING се користат за агрегирање, LIMIT и TOP за ограничување на резултатите, а JOIN за спојување на податоци од повеќе табели.

No comments:

Post a Comment