环境是:
一个数据库里有两个表,分别为A和B。
A表中有A1,A2,A3,A4几个字段,
B表中有B1,B2,B3字段。
A1和B1可以做为索引字段连接两表。
A2字段值一般为:1,0,-1
要求是:以A1字段为索引,查询A2字段中值为1的值占总数的比例,然后按比例值比高到低进行排序,
如:
A表:
A1 A2 A3
人 0 *
和 0 *
人 1 *
人 -1 *
人 1 *
B表:
B1 B2
人 *
和 *
人 *
ä½ å¥½ãSQLè¯å¥æ¯è¿æ ·çã
æ示è¯æ³é误ï¼å¨cast(dpsCount*1.0/AllCount as numeric(5,2)) ä¸ãæ¯ä½ åå¥çï¼cast(A2Count*1.0/AllCount as numeric(5,2))
è½å ä¸ä½ Qåï¼ä½ Qå¤å°ï¼
ç§ä¿¡æçä¸ ä½ QQ
追é®ä½ 好ï¼è½è¯´ä¸ä½ è¿è¯å¥çæè·¯åï¼ç¨äºä¸ä¸ªSelectï¼ï¼é½æä»ä¹ä½ç¨ï¼
-1,最终的结果要查询B2,B3,B4的数据,A表中的数据主要是排序作用。
-2例子只是说明大致格式,真实数据有大量数据。
真实数据表可能是
另外,能写出完整的SQL吗?
declare @zs numeric(18,2)
--总数
select @zs = count(1) from A
--此处条件可以自己添加
if(object_id('tempdb..#a'))
drop table #a
select count(1) / @zs,A1 into #a from A
WHERE A2 = 1
group by A1
--此处如果没有=1的就不会显示出来,如需要,按如下格式写
/*
select sum(case A2 when 1 then 1 else 0 end),A1 into #a from A
group by A1
*/
select * from #a,B
where #a.A1 = B.B1
--试试看行不行吧