ആർട്ടിക്കിൾ ഡയറക്ടറി
MySQL SUM GROUP BY എങ്ങനെ ഉപയോഗിക്കാം? MySQL ഡാറ്റാബേസിൽ GROUP BY COUNT ന്റെ വിശദമായ വിശദീകരണം .
MySQL GROUP BY സ്റ്റേറ്റ്മെന്റ്
ഒന്നോ അതിലധികമോ കോളങ്ങളെ അടിസ്ഥാനമാക്കി ഫല ഗണത്തെ ഗ്രൂപ്പ് ബൈ സ്റ്റേറ്റ്മെന്റ് ഗ്രൂപ്പുചെയ്യുന്നു.
ഗ്രൂപ്പ് ചെയ്ത നിരകളിൽ നമുക്ക് COUNT, SUM, AVG പോലുള്ള ഫംഗ്ഷനുകൾ ഉപയോഗിക്കാം.
ഗ്രൂപ്പ് ബൈ വാക്യഘടന
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)
റോളപ്പിനൊപ്പം ഉപയോഗിക്കുക
ഗ്രൂപ്പുചെയ്ത സ്റ്റാറ്റിസ്റ്റിക്കൽ ഡാറ്റയുടെ മുകളിൽ ഒരേ സ്ഥിതിവിവരക്കണക്കുകൾ (SUM, AVG, COUNT, മുതലായവ) നടത്താൻ WITH ROLLUP നിങ്ങളെ അനുവദിക്കുന്നു.
ഉദാഹരണത്തിന്, മുകളിലുള്ള ഡാറ്റ പട്ടികയെ പേര് അനുസരിച്ച് ഗ്രൂപ്പുചെയ്ത് ഓരോ വ്യക്തിയും എത്ര തവണ ലോഗിൻ ചെയ്തുവെന്ന് കണക്കാക്കിയാൽ:
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` ന് പകരം വയ്ക്കാൻ കഴിയുന്ന ഒരു പേര് സജ്ജമാക്കാൻ നമുക്ക് `coalesce` ഉപയോഗിക്കാം. `coalesce` ന്റെ വാക്യഘടന ഇതാണ്:
select coalesce(a,b,c);
പാരാമീറ്റർ വിവരണം: a == null ആണെങ്കിൽ b തിരഞ്ഞെടുക്കുക; b == null ആണെങ്കിൽ c തിരഞ്ഞെടുക്കുക; a != null ആണെങ്കിൽ a തിരഞ്ഞെടുക്കുക; a, b, c എന്നിവയെല്ലാം null ആണെങ്കിൽ null (അർത്ഥശൂന്യം) തിരികെ നൽകുക.
താഴെ പറയുന്ന ഉദാഹരണങ്ങളിൽ, പേര് ശൂന്യമാണെങ്കിൽ, പകരം ഞങ്ങൾ ആകെ സംഖ്യ ഉപയോഗിക്കുന്നു:
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)
ചെൻ വെയ്ലിയാങ്ങിന്റെ ബ്ലോഗിൽ ( https://www.chenweiliang.com/ ) പങ്കിട്ട "MySQL SUM GROUP BY Usage? MySQL ഡാറ്റാബേസിൽ GROUP BY COUNT ന്റെ വിശദമായ വിശദീകരണം" എന്ന ലേഖനം നിങ്ങൾക്ക് സഹായകരമാകുമെന്ന് പ്രതീക്ഷിക്കുന്നു.
ഈ ലേഖനത്തിന്റെ ലിങ്ക് പങ്കിടാൻ മടിക്കേണ്ടതില്ല: https://www.chenweiliang.com/cwl-477.html
