MySQL-summaryhmä käytön mukaan? Yksityiskohtainen kuvaus ryhmästä lukumäärän mukaan MySQL-tietokannassa

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!

🔔 Saat ensimmäisenä arvokkaan "ChatGPT Content Marketing AI Toolin käyttöoppaan" kanavan ylähakemistoon! 🌟
📚 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!

 

发表 评论

Sähköpostiosoitettasi ei julkaista. 必填 项 已 用 * 标注

Vieritä ylös