MySQLでの集約関数
5824 ワード
student
CREATE TABLE IF NOT EXISTS `student` (
`id` int(4) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(12) NOT NULL,
`sex` enum(' ',' ') NOT NULL DEFAULT ' ',
`age` tinyint(4) NOT NULL DEFAULT '24',
`edu` enum(' ',' ',' ',' ',' ') NOT NULL DEFAULT ' ',
`salary` float(8,2) unsigned NOT NULL DEFAULT '0.00',
`bonus` float(6,2) unsigned NOT NULL DEFAULT '0.00',
`city` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=55 ;
INSERT INTO `student` (`id`, `name`, `sex`, `age`, `edu`, `salary`, `bonus`, `city`) VALUES
(1, ' ', ' ', 24, ' ', 5000.00, 1200.00, ' '),
(2, ' ', ' ', 24, ' ', 750.00, 700.00, ' '),
(3, 'TFboy', ' ', 28, ' ', 8000.00, 800.00, ' '),
(4, ' ', ' ', 25, ' ', 4000.00, 800.00, ' '),
(5, 'AnglaBaby', ' ', 21, ' ', 6000.00, 2800.00, ' '),
(6, ' ', ' ', 24, ' ', 12300.00, 1580.00, ' '),
(7, ' ', ' ', 23, ' ', 2000.00, 530.00, ' '),
(8, ' ', ' ', 24, ' ', 8900.00, 550.00, ' '),
(9, ' ', ' ', 30, ' ', 24000.00, 8500.00, ' '),
(11, ' ', ' ', 34, ' ', 9500.00, 1200.00, ' '),
(12, ' ', ' ', 29, ' ', 2000.00, 1400.00, ' '),
(13, ' ', ' ', 24, ' ', 2000.00, 1400.00, ' '),
(14, ' ', ' ', 24, ' ', 2000.00, 1400.00, ' '),
(15, ' ', ' ', 24, ' ', 2000.00, 1400.00, ' '),
(16, ' ', ' ', 35, ' ', 14000.00, 840.00, ' '),
(17, ' ', ' ', 35, ' ', 14000.00, 840.00, ' '),
(18, ' ', ' ', 37, ' ', 18000.00, 1440.00, ' '),
(19, ' ', ' ', 26, ' ', 8900.00, 1280.00, ' '),
(20, ' ', ' ', 27, ' ', 14900.00, 2800.00, ' '),
(21, ' ', ' ', 35, ' ', 23000.00, 3900.00, ' '),
(22, ' ', ' ', 24, ' ', 2800.00, 1200.00, ' '),
(23, ' ', ' ', 38, ' ', 7800.00, 1220.00, ' '),
(24, ' ', ' ', 33, ' ', 8800.00, 1320.00, ' '),
(25, ' ', ' ', 39, ' ', 18800.00, 2320.00, ' '),
(26, ' ', ' ', 25, ' ', 9400.00, 589.00, ' '),
(27, ' ', ' ', 26, ' ', 7000.00, 520.00, ' '),
(28, ' ', ' ', 27, ' ', 6800.00, 580.00, ' '),
(29, ' ', ' ', 24, ' ', 58000.00, 2500.00, ' '),
(30, ' ', ' ', 35, ' ', 38000.00, 1700.00, ' '),
(31, ' ', ' ', 24, ' ', 28000.00, 2700.00, ' '),
(32, ' ', ' ', 29, ' ', 18000.00, 3000.00, ' '),
(46, ' ', ' ', 24, ' ', 5000.00, 1200.00, ' '),
(34, ' ', ' ', 24, ' ', 3000.00, 3700.00, ' '),
(45, ' ', ' ', 24, ' ', 5000.00, 700.00, NULL),
(37, 'Mary', ' ', 29, ' ', 3000.00, 700.00, ' '),
(38, 'Kate', ' ', 29, ' ', 3000.00, 700.00, ' '),
(36, ' ', ' ', 29, ' ', 3000.00, 800.00, ' '),
(39, ' ', ' ', 35, ' ', 7800.00, 956.00, ' '),
(40, ' ', ' ', 39, ' ', 6700.00, 800.00, ' '),
(41, ' ', ' ', 28, ' ', 8970.00, 845.00, ' '),
(42, ' ', ' ', 28, ' ', 23400.00, 2900.00, ' '),
(43, ' ', ' ', 30, ' ', 24000.00, 8500.00, ' '),
(47, ' ', ' ', 24, ' ', 5000.00, 1200.00, ' '),
(48, 'AnglaBaby', ' ', 24, ' ', 6000.00, 2800.00, ' '),
(49, 'AnglaBaby', ' ', 24, ' ', 6000.00, 2800.00, ' '),
(50, 'AnglaBaby', ' ', 24, ' ', 6000.00, 2800.00, ' '),
(52, ' ', ' ', 24, ' ', 0.00, 500.00, NULL);
1.定義:SQLの集約関数は、値のセットを計算し、単一の値を返します.
2.主に:
AVg():指定したグループの平均値を返します.
count():指定したグループ内のアイテムの合計数を返します.
max():指定したグループのデータの最大値を返します.
min():指定したグループのデータの最小値を返す
sum():指定したグループのデータと
3.使用シーン:集約関数はselect文のgroupby句とよく使用されます
例:最も給料の高い学生の情報を検索する
分析:まず給与が最も高い値を検出し、その値が最も高いことを条件に対応する学生情報を検索する.
第一歩:select max(salary)as最高賃金from student;
ステップ2:select*from student where salary=(select max(salary)as最高賃金from student);
例:学生の最高賃金、最低賃金、平均賃金、賃金合計を調べる
select max(salary)最高賃金、min(salary)最低賃金、avg(salary)平均賃金、sum(salary)賃金総和from student;
例:合計都市数の統計
select count(city) from student;
4.構文:selectフィールドリストfromテーブル名[where句]groupby句;
例:student表の男子学生と女子学生が何人いるかを調べる
分析:まずsexグループによって、男子学生は全部でいくらで、女子学生は全部でいくらで、最後に統計すればいいです;すなわち、統計総数にグループ化される.
文:select sex,count(*)総数from student group by sex;
複数のフィールドを同時にグループ化できます.
例えば、同じ都市の男子学生と女子学生の平均賃金を調べる
分析:cityとsexを同時にグループ化し、男女の平均賃金を統計する必要がある.
文:select city,sex,avg(salary)from student group by city,sex;
転載先:https://www.cnblogs.com/Worssmagee1002/p/7672633.html