Запрос с арифметикой

shmarovoz

Новичок
Приветствую, помогите, пожалуйста, вот с таким вот запросом.

Есть база данных, которая состоит из двух таблиц, студентов и курсов.

Необходимо построить запрос, который будет вычислять курсы, на которых учится больше студентов, чем на первом курсе.

Что-то никак не могу допереть как его построить.

Дамп базы:


--
-- Структура таблицы `kurses`
--

CREATE TABLE IF NOT EXISTS `kurses` (
`id` int(7) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE cp1251_general_cs NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_cs AUTO_INCREMENT=6 ;

--
-- Дамп данных таблицы `kurses`
--

INSERT INTO `kurses` (`id`, `title`) VALUES
(1, 'Первый курс'),
(2, 'Второй курс'),
(3, 'Третий курс'),
(4, 'Четвертый курс'),
(5, 'Пятый курс');

-- --------------------------------------------------------

--
-- Структура таблицы `students`
--

CREATE TABLE IF NOT EXISTS `students` (
`id` int(7) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE cp1251_general_cs NOT NULL,
`surname` varchar(255) COLLATE cp1251_general_cs NOT NULL,
`patr` varchar(255) COLLATE cp1251_general_cs NOT NULL,
`kurs` int(7) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_cs AUTO_INCREMENT=22 ;

--
-- Дамп данных таблицы `students`
--

INSERT INTO `students` (`id`, `name`, `surname`, `patr`, `kurs`) VALUES
(1, 'Вася', 'Пупкин', 'Пупкинович', 1),
(2, 'Петя', 'Баранов', 'Суперович', 1),
(3, 'ваыпыв', 'ывапывап', 'апывапыв', 1),
(4, 'ывпвы', 'пывп', 'пвап', 1),
(5, 'Василий ', 'іваі', 'аіваі', 2),
(6, 'віаів', 'аів', 'аіва', 2),
(7, 'іва', 'іва', 'іваів', 2),
(8, 'віаіва', 'аіва', 'іваів', 2),
(9, 'іваів', 'аіва', 'іваів', 2),
(10, 'віаіва', 'аіва', 'іваів', 2),
(11, 'іваів', 'іва', 'аіва', 3),
(12, 'іва', 'аіва', 'ів', 3),
(13, 'ів', 'аіваі', 'ваів', 3),
(14, 'ваі', 'аі', 'віаів', 4),
(15, 'іваів', 'аів', 'аі', 4),
(16, 'іваів', 'аів', 'аіва', 4),
(17, 'іваіва', 'іва', 'іва', 4),
(18, 'іва', 'іваі', 'ваів', 4),
(19, 'іваіва', 'іва', 'іва', 4),
(20, 'ів', 'аів', 'аіва', 5),
(21, 'іва', 'іваів', 'аіва', 5);
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Собственно как ты пытался это сделать?
 

shmarovoz

Новичок
Я пытался сделать это так:
SELECT kurses.title,students.kurs as cny,kurses.id FROM kurses,students WHERE (SELECT COUNT(*) FROM students WHERE kurs>1) GROUP by kurses.title
Но ничего не получается, так как я никак не могу понять как это реализовать все.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
1. Надо выяснить сколько людей учится на первом курсе, так?
2. Надо посчитать сколько народу учится на остальных курсах и отбросить те, где учится народу меньше, чем на первом.
3. Написать все в виде запросов.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Для начала надо сделать индекс, чтобы избежать фуллскана таблицы.
ALTER TABLE `students` ADD INDEX ( `kurs` )

Далее считаем пункт 1.
 
Сверху