Group functions in MySQL
4 отговора
185 прегледа
Group functions in MySQL
DB: MySQL
Version: 3.23.49a
Имам следната заявка
SELECT p.PACKAGE_ID,ps.SET_ID,count(t.THUMB_SAMPLE_ID)
FROM PACKAGES p,PACKAGE_SETS ps,THUMB_SAMPLES t
WHERE p.PACKAGE_SETS_ID = ps.PACKAGE_SETS_ID and ps.SET_ID = t.SET_ID and p.PACKAGE_ID = '4' GROUP BY ps.SET_ID
Работи си ОК, получавам следното:
PACKAGE_ID SET_ID count(t.THUMB_SAMPLE_ID)
4 25 71
4 29 75
4 39 68
Въпроса ми е има ли начин да получа сумата в колоната count(t.THUMB_SAMPLE_ID), т.е. нещо от рода на sum(count(t.THUMB_SAMPLE_ID))?
Version: 3.23.49a
Имам следната заявка
SELECT p.PACKAGE_ID,ps.SET_ID,count(t.THUMB_SAMPLE_ID)
FROM PACKAGES p,PACKAGE_SETS ps,THUMB_SAMPLES t
WHERE p.PACKAGE_SETS_ID = ps.PACKAGE_SETS_ID and ps.SET_ID = t.SET_ID and p.PACKAGE_ID = '4' GROUP BY ps.SET_ID
Работи си ОК, получавам следното:
PACKAGE_ID SET_ID count(t.THUMB_SAMPLE_ID)
4 25 71
4 29 75
4 39 68
Въпроса ми е има ли начин да получа сумата в колоната count(t.THUMB_SAMPLE_ID), т.е. нещо от рода на sum(count(t.THUMB_SAMPLE_ID))?
Re: Group functions in MySQL
ако не групираш по нищо ще получиш каунт за целия резултат, който ще е равен на сумата от каунтите, които получаваш сега.
Позволявам си да отбележа че в селект листа имаш p.PACKAGE_ID,ps.SET_ID, докато в груп бай имаш само ps.SET_ID, което не е стандартен SQL. Виждам че ти работи, но в друга субд или няма да работи, или резултата ще е различен.
Позволявам си да отбележа че в селект листа имаш p.PACKAGE_ID,ps.SET_ID, докато в груп бай имаш само ps.SET_ID, което не е стандартен SQL. Виждам че ти работи, но в друга субд или няма да работи, или резултата ще е различен.
Re: Group functions in MySQL
Hi,
Мерси за отговора - оказа се че трябва да групирам по p.PACKAGE_ID, за да получа каквото искам. Ако не групирам по нищо, ми дава грешка че не може да използва group функция без group by, a ако групирам по двете (независимо в какъв ред), получавам същото като при group by s.SET_ID).
Да, чувал съм за разлики при ползване на group by при други СУБД, но засега не съм се сблъсквал с тях. Как трябва да е според стандартния SQL?
Още веднъж, благодаря ти.
Мерси за отговора - оказа се че трябва да групирам по p.PACKAGE_ID, за да получа каквото искам. Ако не групирам по нищо, ми дава грешка че не може да използва group функция без group by, a ако групирам по двете (независимо в какъв ред), получавам същото като при group by s.SET_ID).
Да, чувал съм за разлики при ползване на group by при други СУБД, но засега не съм се сблъсквал с тях. Как трябва да е според стандартния SQL?
Още веднъж, благодаря ти.
Re: Group functions in MySQL
Според стандарта можеш да групираш по дадена колона или alias само ако се появяван в частта SELECT
SELECT name, SUM(points) GROUP BY name;
В MySQL е допустимо да направиш:
SELECT SUM(points) GROUP BY name;
Както и друг път съм казвал интерпретацията на резултатите е доста сложничка.
Я обясни Торанага Сан какво се опитваш да постигнеш?
Групирането по повече от една колона е съвсем друго нещо и си има доста нормална логика.
SELECT seller, product, sum(sell_price) FROM sells GROUP by seller, product;
Ако ти трябват междунни суми - можеш да опиташ WITH CUBE и WITH ROLLUP, но ще получиш съобщенийце, че още не се поддържат от тази версия на MySQL - трябваше да се появят в 4.1 ама засега има малко проблеми.
salle.online.bg/sig
SELECT name, SUM(points) GROUP BY name;
В MySQL е допустимо да направиш:
SELECT SUM(points) GROUP BY name;
Както и друг път съм казвал интерпретацията на резултатите е доста сложничка.
Я обясни Торанага Сан какво се опитваш да постигнеш?
Групирането по повече от една колона е съвсем друго нещо и си има доста нормална логика.
SELECT seller, product, sum(sell_price) FROM sells GROUP by seller, product;
Ако ти трябват междунни суми - можеш да опиташ WITH CUBE и WITH ROLLUP, но ще получиш съобщенийце, че още не се поддържат от тази версия на MySQL - трябваше да се появят в 4.1 ама засега има малко проблеми.
salle.online.bg/sig
Re: Group functions in MySQL
Имам следното:
Имам SETS, които грубо казано се състоят от картинки (THUMB_SAMPLES)
връзката тук е 1:n, в THUMB_SAMPLES си имам колона SEТ_ID за нея
После имам пакети (PACKAGES), които се състоят от сетове. Връзката между тях е много към много и се пази в таблицата PACKAGE_SETS
Та аз се правя нещо доста тривиално - искам да преброя колко картинки имам в един пакет, който се състои от 3 сета примерно...
Не знам защо, нещо не го подкарах от първия отначало, най-доброто което постигнах е че получих бройката сет по сет и после ги събрах
Е, днес го подкарах вече....
Колкото до групирането по повече от една колона, просто експериментирах и споделих резултата, защото ми се стори странно че при различен ред на колоните в group by, резултата си беше един и същ.
Та това е... нищо особено.
Имам SETS, които грубо казано се състоят от картинки (THUMB_SAMPLES)
връзката тук е 1:n, в THUMB_SAMPLES си имам колона SEТ_ID за нея
После имам пакети (PACKAGES), които се състоят от сетове. Връзката между тях е много към много и се пази в таблицата PACKAGE_SETS
Та аз се правя нещо доста тривиално - искам да преброя колко картинки имам в един пакет, който се състои от 3 сета примерно...
Не знам защо, нещо не го подкарах от първия отначало, най-доброто което постигнах е че получих бройката сет по сет и после ги събрах
Е, днес го подкарах вече....
Колкото до групирането по повече от една колона, просто експериментирах и споделих резултата, защото ми се стори странно че при различен ред на колоните в group by, резултата си беше един и същ.
Та това е... нищо особено.