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