Ответ 1
попробовать:
SELECT
ROW_NUMBER() OVER(ORDER BY age) AS RowNumber
,count(*) as usercount
from users
group by age
Мне было интересно, можно ли будет перечислить возвращенные строки. Не в соответствии с содержимым любого столбца, а просто с получением последовательного целочисленного индекса. Э.Г.
select ?, count(*) as usercount from users group by age
вернул бы что-то вроде:
1 12
2 78
3 4
4 42
это для https://data.stackexchange.com/
попробовать:
SELECT
ROW_NUMBER() OVER(ORDER BY age) AS RowNumber
,count(*) as usercount
from users
group by age
Если это Oracle, используйте rownum
.
SELECT SOMETABLE.*, ROWNUM RN
FROM SOMETABLE
WHERE SOMETABLE.SOMECOLUMN = :SOMEVALUE
ORDER BY SOMETABLE.SOMEOTHERCOLUMN;
Окончательный ответ будет полностью зависеть от того, какую базу данных вы используете.
Для MySql:
SELECT @row := @row + 1 as row FROM anytable a, (SELECT @row := 0) r
Как вы это сделаете, это зависит от вашего сервера базы данных. В SQL Server вы можете использовать row_number()
:
select row_number() over (order by age)
, age
, count(*) as usercount
from users
group by
age
order by
age
Но часто проще и быстрее использовать номера строк на стороне клиента.
использовать rownumber функция доступна на сервере sql
SELECT
ROW_NUMBER() OVER (ORDER BY columnNAME) AS 'RowNumber',count(*) as usercount
FROM users
для Mysql
set @row:=0;
select @row:[email protected]+1 as row, a.* from table_name as a;