Select + сортировка + количество элементов ответа
Я недавно хотел выполнить нечто такое, но не знал как:
select фамилия,оценка where count(фамилия)>1 order by фамилия
чтобы получить только те строки, где элемены первого столбца встречаются более одного раза. Допустим, есть записи о разных людях (столбец фамилий) и их оценок (второй столбец оценок). Надо получить всех тех, кто имеет более одной оценки. Не зная как правильно, сделал в 2 запроса к базе.
Иванов 4
Петров 5
Иванов 3
Иванов 3
Сидоров 2
Петров 3
Пупкин 1
В данном примере нужно выбрать Иванова и Петрова, т.к. у них более чем одна оценка (разумеется не только 2 фамилии, но и оценки, т.к. таблицу на 5 строк).
Оказывается это можно делать в один запрос:
SELECT фамилия, оценка, count(фамилия) AS превдоним FROM table GROUP BY фамилия HAVING псевдоним > 1
"псевдоним" - любое слово
"table" - название таблицы
вот так...
Я недавно хотел выполнить нечто такое, но не знал как:
select фамилия,оценка where count(фамилия)>1 order by фамилия
чтобы получить только те строки, где элемены первого столбца встречаются более одного раза. Допустим, есть записи о разных людях (столбец фамилий) и их оценок (второй столбец оценок). Надо получить всех тех, кто имеет более одной оценки. Не зная как правильно, сделал в 2 запроса к базе.
Иванов 4
Петров 5
Иванов 3
Иванов 3
Сидоров 2
Петров 3
Пупкин 1
В данном примере нужно выбрать Иванова и Петрова, т.к. у них более чем одна оценка (разумеется не только 2 фамилии, но и оценки, т.к. таблицу на 5 строк).
Оказывается это можно делать в один запрос:
SELECT фамилия, оценка, count(фамилия) AS превдоним FROM table GROUP BY фамилия HAVING псевдоним > 1
"псевдоним" - любое слово
"table" - название таблицы
вот так...