地区 色系名 次数
北部地区 裸色系 1
东部地区 红色系 2
东部地区 粉色系 1
东部地区 裸色系 1
东部地区 紫色系 1
华中地区 粉色系 2
华中地区 红色系 1
现在我要得到每个地区次数最多的一个色系,求思想或语句~~~~~
结果
地区 色系名 次数
北部地区 裸色系 1
东部地区 红色系 2
华中地区 粉色系 2
------解决方案--------------------
- SQL code
select 地区,色系名,max(次数) from tb group by 地区,色系名
------解决方案--------------------
- SQL code
SELECT ROW_NUMBER() OVER (PARTITION BY 地区 ORDER BY 次数 DESC) AS num FROM dbo.aWHERE num=1
------解决方案--------------------
- SQL code
CREATE TABLE TABLE5( Col1 INT, Col2 VARCHAR(10), Col3 VARCHAR(10))GOINSERT INTO TABLE5SELECT 5, '华中地区', '红色系' UNIONSELECT 9, '华中地区', '粉色系' UNIONSELECT 10, '华中地区', '粉色系' UNIONSELECT 6, '东部地区', '红色系' UNIONSELECT 1, '东部地区', '红色系' UNIONSELECT 2, '东部地区', '紫色系' UNIONSELECT 3, '东部地区', '粉色系' UNIONSELECT 4, '北部地区', '裸色系' UNIONSELECT 1, '东部地区', '裸色系'WITH table1 as (SELECT Col2,Col3,COUNT(1) AS numFROM Table5GROUP BY Col2,Col3)SELECT Col2,Col3,numFROM TABLE1 AS BWHERE num >= ALL(SELECT num from TABLE1 as A WHERE A.Col2 = B.col2)
------解决方案--------------------
借用4楼的测试数据
- SQL code
CREATE TABLE TABLE5( Col1 INT, Col2 VARCHAR(10), Col3 VARCHAR(10))GOINSERT INTO TABLE5SELECT 5, '华中地区', '红色系' UNIONSELECT 9, '华中地区', '粉色系' UNIONSELECT 10, '华中地区', '粉色系' UNIONSELECT 6, '东部地区', '红色系' UNIONSELECT 1, '东部地区', '红色系' UNIONSELECT 2, '东部地区', '紫色系' UNIONSELECT 3, '东部地区', '粉色系' UNIONSELECT 4, '北部地区', '裸色系' UNIONSELECT 1, '东部地区', '裸色系'
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
lz:你按地区分组,然后取max就行了。
恭喜楼主成功。