当前位置: 代码迷 >> Sql Server >> sql语句~
  详细解决方案

sql语句~

热度:89   发布时间:2016-04-27 13:10:20.0
求一个sql语句~~~~~~
地区 色系名 次数
北部地区 裸色系 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, '东部地区', '裸色系'
------解决方案--------------------
探讨
TestID 地区 色系
5 华中地区 红色系
9 华中地区 粉色系
10 华中地区 粉色系
6 东部地区 红色系
1 东部地区 红色系
2 东部地区 紫色系
3 东部地区 粉色系
4 北部地区 裸色系
1 东部地区 裸色系
额说错了,本来是这样的我已经Group bY 地区和色系一次
现在要得到根据地区和色系分组之后次数最多的地区和色系

------解决方案--------------------
探讨
SQL code

SELECT ROW_NUMBER() OVER (PARTITION BY 地区 ORDER BY 次数 DESC) AS num FROM dbo.a
WHERE num=1

------解决方案--------------------
探讨
SQL code


CREATE TABLE TABLE5
(
Col1 INT,
Col2 VARCHAR(10),
Col3 VARCHAR(10)
)
GO
INSERT INTO TABLE5
SELECT 5, '华中地区', '红色系' UNION
SELECT 9, '华中地区', '粉色系' UNION
SELECT 10, '华……

------解决方案--------------------
lz:你按地区分组,然后取max就行了。



恭喜楼主成功。
  相关解决方案