Artikkelihakemisto
MySQL Summaryhmä käytön mukaan?MySQL-tietokantaYksityiskohtainen kuvaus ryhmästä lukumäärän mukaan
MySQL GROUP BY -lause
GROUP BY -käsky ryhmittelee tulosjoukon yhden tai useamman sarakkeen perusteella.
Ryhmitetyssä sarakkeessa voimme käyttää COUNT, SUM, AVG jne. toimintoja.
GROUP BY syntaksi
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Esimerkkiesittely
Tämän luvun esimerkissä käytetään seuraavaa taulukkorakennetta ja dataa, ennen kuin käytämme sitä, voimme tuoda seuraavat tiedot tietokantaan.
SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `employee_tbl` -- ---------------------------- DROP TABLE IF EXISTS `employee_tbl`; CREATE TABLE `employee_tbl` ( `id` int(11) NOT NULL, `name` char(10) NOT NULL DEFAULT '', `date` datetime NOT NULL, `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of `employee_tbl` -- ---------------------------- BEGIN; INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2'); COMMIT; SET FOREIGN_KEY_CHECKS = 1;
Kun tuonti on onnistunut, suorita seuraava SQL-käsky:
mysql> set names utf8; mysql> SELECT * FROM employee_tbl; +----+--------+---------------------+--------+ | id | name | date | singin | +----+--------+---------------------+--------+ | 1 | 小明 | 2016-04-22 15:25:33 | 1 | | 2 | 小王 | 2016-04-20 15:25:47 | 3 | | 3 | 小丽 | 2016-04-19 15:26:02 | 2 | | 4 | 小王 | 2016-04-07 15:26:14 | 4 | | 5 | 小明 | 2016-04-11 15:26:40 | 4 | | 6 | 小明 | 2016-04-04 15:26:54 | 2 | +----+--------+---------------------+--------+ 6 rows in set (0.00 sec)
Seuraavaksi käytämme GROUP BY -käskyä datataulukon ryhmittelyyn nimen mukaan ja laskemme, kuinka monta tietuetta kullakin henkilöllä on:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Käytä ROLLUPIN KANSSA
ROLLUPIN KANSSA voi toteuttaa samat tilastot (SUM, AVG, COUNT...) ryhmiteltyjen tilastojen perusteella.
Ryhmittelemme esimerkiksi yllä olevan tietotaulukon nimen mukaan ja laskemme sitten, kuinka monta kertaa kukin henkilö on kirjautunut sisään:
mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; +--------+--------------+ | name | singin_count | +--------+--------------+ | 小丽 | 2 | | 小明 | 7 | | 小王 | 7 | | NULL | 16 | +--------+--------------+ 4 rows in set (0.00 sec)
Tietue NULL edustaa kaikkien kirjautumisten määrää.
Voimme käyttää yhdistämistä asettaaksemme nimen, joka voi korvata NUll, yhdistä syntaksin:
select coalesce(a,b,c);
Parametrin kuvaus: jos a==nolla, valitse b; jos b==nolla, valitse c; jos a!=nolla, valitse a; jos abc on tyhjä, palauta tyhjä (merkityksetön).
Seuraavassa esimerkissä, jos nimi on tyhjä, käytämme sen sijaan summaa:
mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; +--------------------------+--------------+ | coalesce(name, '总数') | singin_count | +--------------------------+--------------+ | 小丽 | 2 | | 小明 | 7 | | 小王 | 7 | | 总数 | 16 | +--------------------------+--------------+ 4 rows in set (0.01 sec)
Hope Chen Weiliang -blogi ( https://www.chenweiliang.com/ ) jaettu "MySQL-summaryhmä käytön mukaan? Yksityiskohtainen selitys ryhmästä lukumäärän mukaan MySQL-tietokannassa" on hyödyllinen sinulle.
Tervetuloa jakamaan tämän artikkelin linkki:https://www.chenweiliang.com/cwl-477.html
Tervetuloa Chen Weiliangin blogin Telegram-kanavalle saadaksesi viimeisimmät päivitykset!
📚 Tämä opas sisältää valtavasti arvoa, 🌟Tämä on harvinainen tilaisuus, älä missaa sitä! ⏰⌛💨
Jaa ja tykkää jos tykkäät!
Jakamasi ja tykkäyksesi ovat jatkuva motivaatiomme!