Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql根据group by对查询行进行编号_Mysql_Sql_Window Functions - Fatal编程技术网

MySql根据group by对查询行进行编号

MySql根据group by对查询行进行编号,mysql,sql,window-functions,Mysql,Sql,Window Functions,我有一张这样的桌子 id name city ------------------------------- 1 Ian London 2 John London 3 David New York 4 Sylvia Mumbai 5 Beryl New York 6

我有一张这样的桌子

id          name           city
-------------------------------
1            Ian           London
2            John          London
3            David         New York
4            Sylvia        Mumbai
5            Beryl         New York
6            Rashan        London
我想检索按城市分组的行编号的数据。像这样

name          city          count
-------------------------------
Ian           London          0
John          London          1
Rashan        London          2
Beryl         New York        0
David         New York        1
Sylvia        Mumbai          0
我一直在尝试

ROW_NUMBER() OVER (PARTITION BY City ORDER BY name)-1

但是计数是返回的所有项目,我想在这里计数每个城市的人数。

您的代码应该做您想做的事情-但是,您提到了
分组方式
,这与此处无关。查询应该是:

select name, city, row_number() over(partition by city order by name) - 1 rn
from mytable

要获得指定的结果,请执行以下操作:

select name, city, row_number() over (partition by city, order by name) as count
from t
order by count(*) over (partition by city) desc,  -- number of rows in city
         city,
         name;

您似乎希望城市按城市名称的数量排序。

您的代码应该满足您的要求。请向我们展示您的整个查询。
选择姓名、城市、行号()(按城市划分,按姓名排序)-1从人对我有用™@单。我想你只需要在查询结束时按城市、姓名排序。谢谢你的帮助,我意识到我打错了,它确实有效。