Někdy může být nutné vypočítat procento sloupce (např. prodeje, tržby) v datech, abyste pochopili, jaké procento celkové hodnoty sloupce pochází z každého řádku (např. země, stát atd.). Protože neexistuje žádná předem připravená funkce pro výpočet této hodnoty, musíte pro ni napsat dotaz SQL. Zde je návod, jak vypočítat procento sloupce v MySQL
Jak vypočítat procento sloupce v MySQL
Řekněme, že máte následující tabulku, jak je zobrazena níže.
mysql> create table sales(rep varchar(255),sale int); mysql> insert into sales values('Bob',15),('Sally',30),('Peter',15); mysql> select * from sales; +-------+------+ | rep | sale | +-------+------+ | Bob | 15 | | Sally | 30 | | Peter | 15 | +-------+------+
Řekněme, že chcete zobrazit sloupec „procento z celkového počtu“, což je jednoduše procento z celkového prodeje sloupec, jak je uvedeno níže.
+-------+------+------------------+ | rep | sale | percent of total | +-------+------+------------------+ | Bob | 15 | 25 | | Sally | 30 | 50 | | Peter | 15 | 25 | +-------+------+------------------+
Můžete to udělat několika způsoby pomocí jediného dotazu. Pro výpočet součtu a procenta není třeba psát samostatné dotazy. Podívejme se na každou z nich
Bonusové čtení: Jak vypočítat procento dvou sloupců v MySQL
Jak vypočítat procento sloupce v MySQL pomocí CROSS JOIN
Chcete-li vypočítat procento sloupce v MySQL, můžete jednoduše spojit sum() z prodeje sloupec s původní tabulkou.
SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total` FROM sales CROSS JOIN (SELECT SUM(sale) AS s FROM sales) t; +-------+------+------------------+ | rep | sale | percent of total | +-------+------+------------------+ | Bob | 15 | 25 | | Sally | 30 | 50 | | Peter | 15 | 25 | +-------+------+------------------+
Pokud chcete přidat klauzuli where k filtrování dat, musíte ji umístit za CROSS JOIN, jak je znázorněno níže. V opačném případě se zobrazí chyba.
SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total` FROM sales CROSS JOIN (SELECT SUM(sale) AS s FROM sales) t where Rep='Bob'; +------+------+------------------+ | Rep | Sale | percent of total | +------+------+------------------+ | Bob | 15 | 25 | +------+------+------------------+
Pokud však chcete přidat klauzuli where během sčítání sloupce, musíte ji přidat do klauzule select of total, jak je znázorněno níže. Řekněme, že chcete vyloučit Boba ze samotného součtu, pak je zde dotaz, jak to udělat.
SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total` FROM sales CROSS JOIN (SELECT SUM(sale) AS s FROM sales where Rep<>'Bob') t where Rep<>'Bob'; +-------+------+------------------+ | Rep | Sale | percent of total | +-------+------+------------------+ | Sally | 30 | 66.6667 | | Peter | 15 | 33.3333 | +-------+------+------------------+
Bonusové čtení: Jak vypočítat procento růstu týden po týdnu v MySQL
Jak vypočítat procento sloupce v MySQL pomocí SUBSELECT/SUBQUERY
Můžete také vypočítat procento sloupce pomocí dílčího výběru namísto použití JOIN, jak je uvedeno níže.
SELECT Rep, Sale, Sale * 100 / (SELECT SUM(sale) AS s FROM sales) AS `percent of total` FROM sales; +-------+------+------------------+ | rep | sale | percent of total | +-------+------+------------------+ | Bob | 15 | 25 | | Sally | 30 | 50 | | Peter | 15 | 25 | +-------+------+------------------+
Pokud chcete přidat klauzuli where k filtrování dat, musíte ji umístit za CROSS JOIN, jak je znázorněno níže. V opačném případě se zobrazí chyba.
SELECT Rep, Sale, Sale * 100 / (SELECT SUM(sale) AS s FROM sales) AS `percent of total` FROM sales where Rep='Bob'; +--------+--------+-------------------+ | Rep | Sale | percent of total | +--------+--------+-------------------+ | Bob | 15 | 25 | +--------+--------+-------------------+
Pokud však chcete přidat klauzuli where během sčítání sloupce, musíte ji přidat do klauzule select of total. Řekněme, že chcete vyloučit Boba ze samotného součtu, pak je zde dotaz, jak to udělat.
SELECT Rep, Sale, Sale * 100 / (SELECT SUM(sale) AS s FROM sales where Rep='Bob') AS `percent of total` FROM sales where Rep='Bob'; +-------+------+------------------+ | Rep | Sale | percent of total | +-------+------+------------------+ | Sally | 30 | 66.6667 | | Peter | 15 | 33.3333 | +-------+------+------------------+
Výše uvedené dotazy můžete přizpůsobit podle svého požadavku na výpočet procenta sloupce v MySQL.
Dále můžete použít nástroj pro vytváření sestav k vykreslení dat do koláčového grafu nebo řídicího panelu. Zde je příklad výsečového grafu vytvořeného pomocí Ubiq.
Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze MySQL, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.