Koma berhevoka MySQL li gorî karanîna? Di databasa MySQL de ravekirina berfireh a komê li gorî hejmartinê

MySQL Koma berhevokê li gorî karanîna?Databasa MySQLRavekirina berfireh a komê ji hêla hejmartinê ve

Daxuyaniya MySQL GROUP BY

Daxuyaniya GROUP BY encamên ku li ser bingeha yek an çend stûnan têne kom kirin.

Li ser stûna komkirî em dikarin fonksiyonên COUNT, SUM, AVG, hwd. bikar bînin.

GROUP BY syntaks

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Nimûne xwenîşandan

Mînaka di vê beşê de struktur û daneya tabloya jêrîn bi kar tîne, berî ku em bikar bînin, em dikarin daneyên jêrîn bixin nav databasê.

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;

Piştî ku import serketî bû, daxuyaniya SQL ya jêrîn bicîh bikin:

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)

Dûv re em danezana GROUP BY bikar tînin da ku tabloya daneyê li gorî navan kom bikin û bijmêrin ku her kesek çend tomar hene:

mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
+--------+----------+
| name   | COUNT(*) |
+--------+----------+
| 小丽 |        1 |
| 小明 |        3 |
| 小王 |        2 |
+--------+----------+
3 rows in set (0.01 sec)

BI GELEKÊ BIKETINE

BI ROLLUP dikare heman statîstîkan (SUM, AVG, HEJMAR...) li ser bingeha statîstîkên komkirî bicîh bîne.

Mînakî, em tabloya daneya jorîn bi navên xwe kom dikin, û dûv re çend caran ku her kes têkeve dihejmêrin:

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)

Tomara NULL ji bo her kesî hejmara têketinê nîşan dide.

Em dikarin hevgirtinê bikar bînin da ku navek saz bikin ku dikare şûna NUll, hevoksaziya hevgirtinê bigire:

select coalesce(a,b,c);

Danasîna parametreyê: heke a==null, b hilbijêrin; heke b==null, c hilbijêrin; heke a!=null, a hilbijêrin; heke abc betal be, null vegerîne (bê wate).

Di mînaka jêrîn de heke nav vala ye em li şûna wê tevahiyê bikar tînin:

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 Blog ( https://www.chenweiliang.com/ ) parve kir "MySQL sum group by use? Ravekirina Berfireh a Komê ji hêla Hejmarê ve di Databasa MySQL de" ji we re arîkar e.

Bi xêr hatî bo parvekirina girêdana vê gotarê:https://www.chenweiliang.com/cwl-477.html

Hûn bi xêr hatin kanala Telegramê ya bloga Chen Weiliang da ku nûvekirinên herî dawî bistînin!

🔔 Bibin yê yekem ku di pelrêça jorîn a kanalê de "Rêbernameya Bikaranîna Amûra AI-ya Kirrûbirra Naveroka ChatGPT" ya bi qîmet bistîne! 🌟
📚 Ev rêber nirxek pir mezin dihewîne, 🌟Ev derfetek kêm e, wê ji dest nede! ⏰⌛💨
Heke hûn hez dikin parve bikin û hez bikin!
Parvekirin û ecibandinên we motîvasyona meya domdar e!

 

评论

Navnîşana e-nameya we nayê weşandin. Zeviyên pêdivî têne bikar anîn * Awanasî

li jor bigerin