אַרטיקל וועגווייַזער
מיסקל סומע גרופּע לויט באַניץ?MySQL דאַטאַבייסדיטיילד דערקלערונג פון גרופּע דורך ציילן
MySQL GROUP BY דערקלערונג
די GROUP BY ויסזאָגונג גרופּעס די רעזולטאַט שטעלן באזירט אויף איין אָדער מער שפאלטן.
אויף די גרופּט זייַל מיר קענען נוצן COUNT, SUM, AVG, עטק פאַנגקשאַנז.
GROUP BY סינטאַקס
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
בייַשפּיל דעמאַנסטריישאַן
דער ביישפּיל אין דעם קאַפּיטל ניצט די פאלגענדע טיש סטרוקטור און דאַטן. איידער ניצן עס, מיר קענען אַרייַנפיר די פאלגענדע דאַטן אין די דאַטאַבייס.
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;
נאָך די ימפּאָרט איז געראָטן, ויספירן די פאלגענדע SQL ויסזאָגונג:
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)
ווייַטער מיר נוצן די GROUP BY ויסזאָגונג צו גרופּע די דאַטן טיש דורך נאָמען און ציילן ווי פילע רעקאָרדס יעדער מענטש האט:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
ניצן מיט ROLLUP
מיט ROLLUP קענען ינסטרומענט דער זעלביקער סטאַטיסטיק (סאַם, אַווג, COUNT ...) אויף דער באזע פון גרופּט סטאַטיסטיק.
פֿאַר בייַשפּיל, מיר גרופּע די אויבן דאַטן טיש דורך נאָמען, און דעמאָלט ציילן די נומער פון מאל יעדער מענטש איז לאָגד אין:
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)
די רעקאָרד NULL רעפּראַזענץ די נומער פון לאָגינס פֿאַר אַלעמען.
מיר קענען נוצן קאָאַלעסס צו שטעלן אַ נאָמען וואָס קענען פאַרבייַטן NUll, קאָאַלעסס סינטאַקס:
select coalesce(a,b,c);
פּאַראַמעטער באַשרייַבונג: אויב אַ == נאַל, קלייַבן b; אויב b == נאַל, קלייַבן C; אויב אַ! = נאַל, קלייַבן אַ; אויב abc איז נאַל, צוריקקומען נאַל (ניט מינינגלאַס).
אין די פאלגענדע בייַשפּיל אויב די נאָמען איז ליידיק, מיר נוצן די גאַנץ אַנשטאָט:
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 בלאָג ( https://www.chenweiliang.com/ ) שערד "MySQL סאַכאַקל גרופּע לויט באַניץ? דיטיילד דערקלערונג פון גרופע דורך ציילן אין MySQL דאַטאַבאַסע" איז נוציק פֿאַר איר.
ברוכים הבאים צו טיילן דעם לינק פון דעם אַרטיקל:https://www.chenweiliang.com/cwl-477.html
כּדי צו עפֿענען מער פֿאַרבאָרגענע טריקס🔑, ברוכים הבאים זיך אָנצושליסן אין אונדזער טעלעגראַם קאַנאַל!
ייַנטיילן און ווי אויב איר ווי! דיין שאַרעס און לייקס זענען אונדזער מאָוטאַוויישאַן!