博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道sql测试题目
阅读量:6364 次
发布时间:2019-06-23

本文共 1538 字,大约阅读时间需要 5 分钟。

   测试场景如下,存在一堆颜色和形状的球,需要按规则汇总。

   001 红色 圆形

   005 红色 圆形

   006 红色 圆形

   008 红色 圆形

   010 黑色 球形

   011 黄色 方形

   012 红色 圆形

 

  需要得出的结果是:4红色圆形 1黑色球形 1 黄色方形 1红色球形

 看到题目,我们分析一下,这是一个汇总题目,首先需要把颜色+形状汇总为不重复的值,然后找出count值,需要注意的是红色圆形一共有5个,但是结果分别是4个和1个,这里就需要仔细看一下。经过分析,这其实是一个比较题,我们把颜色形状看成一个值,比较第二行值和第一行值是否相等,如果相等,就需要计数上+1,这是一个很典型的题目,找到了这里,思路也就有了。

 

 1 
create 
table #tb(编号 
varchar(
10),颜色 
varchar(
10),形状 
varchar(
10))
 2 
insert 
into #tb 
values(
'
001
' ,
'
红色
' ,
'
圆形
'
 3 
insert 
into #tb 
values(
'
005
' ,
'
红色
' ,
'
圆形
'
 4 
insert 
into #tb 
values(
'
006
' ,
'
红色
' ,
'
圆形
'
 5 
insert 
into #tb 
values(
'
008
' ,
'
红色
' ,
'
圆形
'
 6 
insert 
into #tb 
values(
'
011
' ,
'
黑色
' ,
'
球形
'
 7 
insert 
into #tb 
values(
'
015
' ,
'
黄色
' ,
'
方形
'
 8 
insert 
into #tb 
values(
'
026
' ,
'
红色
' ,
'
圆形
'
 9 
insert 
into #tb 
values(
'
031
' ,
'
红色
' ,
'
圆形
'
10 
insert 
into #tb 
values(
'
035
' ,
'
黄色
' ,
'
球形
'
11 
insert 
into #tb 
values(
'
036
' ,
'
黑色
' ,
'
球形
'
12 
insert 
into #tb 
values(
'
039
' ,
'
黑色
' ,
'
球形
'
13 
insert 
into #tb 
values(
'
055
' ,
'
黑色
' ,
'
球形
')
14 
go
15 
16 
select fid
=
0,id
=
0,颜色
+形状 
as 颜色形状 
into # 
from #tb 
order 
by 编号
17 
18 
select 
* 
from #
19 
20 
declare 
@颜色形状 
varchar(
20),
@i 
int,
@j 
int
21 
update # 
set id
=
@i,fid
=
@j,
22             
@i
=
case 
when 
@颜色形状
=颜色形状 
then 
isnull(
@i,
0)
+
1 
else 
1 
end,
23             
@j
=
case 
when 
@颜色形状
=颜色形状 
then 
isnull(
@j,
0
else 
isnull(
@j,
0)
+
1 
end,
24             
@颜色形状
=颜色形状
25 
select 
ltrim(
max(id))
+颜色形状 
as 结果 
from # 
group 
by fid,颜色形状 
order 
by fid
26 
drop 
table #

  这里的处理过程是创建变量@颜色形状,来保存前一行值,用来和当前值进行比较,如果相等 @j+1,最后存在@i是为了分组方便。

    这个很典型的题目,其实就是一个比较数据是否一致的计数题。

转载地址:http://xjama.baihongyu.com/

你可能感兴趣的文章
Java的初始化顺序
查看>>
《css揭秘》读书笔记
查看>>
js 判断回文字符串
查看>>
shields小徽章是如何生成的?以及搭建自己的shield服务器
查看>>
猫头鹰的深夜翻译:spring事务管理
查看>>
记一次使用Spring REST Docs + travis + github自动生成API接口文档的操作步骤(下)...
查看>>
1、集合 2、Iterator迭代器 3、增强for循环 4、泛型
查看>>
关于/var/run/docker.sock
查看>>
SCrapy爬虫大战京东商城
查看>>
用 JavaScript 实现链表操作 - 11 Alternating Split
查看>>
Laravel优秀扩展包整理
查看>>
日志分析之识别真假蜘蛛与处理办法
查看>>
回顾小程序2018年三足鼎立历程,2019年BAT火力全开
查看>>
太多脚本将会毁掉持续交付
查看>>
一地鸡毛 OR 绝地反击,2019年区块链发展指南
查看>>
C# 8新提案让泛型Attribute成为现实
查看>>
ASP.NET Core:简洁的力量
查看>>
关于AWS的Firecracker,技术人应该知道的十件事
查看>>
卢森堡大学发布RepuCoin系统,可破解区块链51%攻击
查看>>
国内云计算厂商众生相:四大阵营十几家企业生存盘点
查看>>