一道SQL面试例题 if...else 与聚集函数
2014-10-22 23:31
302 查看
晚上回来,同学说面试遇到了一个SQL面试题目,自己做了一下,总结总结。
题目如下:
下面是产品数据表(产品id,颜色col,数量num),其中每种产品有1~2种颜色。
求每种产品各颜色的数量差值(对于只有一种颜色的保留产品总数)
解法如下:
1.先求出每种产品各颜色的数量
这个不难,直接使用group by 就可以啦。SQL语句如下:
select id,col,sum(num) total from chanpin group by id,col
结果:
2.[b]求每种产品各颜色的数量差值([b]对于只有一种颜色的保留产品总数)[/b][/b]
因为每种产品只有1~2中:
(1)如果有两种,结果就是颜色多的产品数量 - 颜色少的产品数量;
(2)如果有一种,结果就是这种颜色的产品数量。
SQL语句如下:
结果:
题目如下:
下面是产品数据表(产品id,颜色col,数量num),其中每种产品有1~2种颜色。
求每种产品各颜色的数量差值(对于只有一种颜色的保留产品总数)
解法如下:
1.先求出每种产品各颜色的数量
这个不难,直接使用group by 就可以啦。SQL语句如下:
select id,col,sum(num) total from chanpin group by id,col
结果:
2.[b]求每种产品各颜色的数量差值([b]对于只有一种颜色的保留产品总数)[/b][/b]
因为每种产品只有1~2中:
(1)如果有两种,结果就是颜色多的产品数量 - 颜色少的产品数量;
(2)如果有一种,结果就是这种颜色的产品数量。
SQL语句如下:
select A.id ,if( count(*) >1, #判断条件,颜色数量 max(A.total) - min(A.total), #颜色多的产品数量 - 颜色少的产品数量 max(A.total) #产品数量 ) dis from ( select id,col,sum(num) total from chanpin group by id,col ) A group by A.id;
结果:
相关文章推荐
- 一道SQL面试例题 if...else 与聚集函数
- sql中IF ELSE THEN语法
- 最近面试,笔试题中的一道sql题
- 一道简单的面试题(求较小的值,不能用 比较运算符 if-else ?: while for 内嵌汇编 递归 第三方函数)(zt)
- T-SQL判断语句(if...else)
- [面试]应聘某公司BI/DW/SQL开发的一道测试题(行转列)
- SQL IF..ELSE..在存储过程的使用规范
- 一道面试题:求1+2+…+n,不使用乘除法、for、while、if 、else、switch、case 等关键字
- (转)SQL语句Select Case和If else
- Sqlserver if else case when
- sql if else 写法,和 多个case when用法
- SQLIF..ELSE..在存储过程的使用规范
- SQL中的IF ELSE(CASE语句的使用)
- 一道关于for循环于if-else题
- 【转】sql if else 语句
- sql----用if...then...elseif...,,,2.用case...when...then...
- SQL IF..ELSE..在存储过程的使用规范
- IF- ELSE Conditon sql code
- SQL IF..ELSE..在存储过程的使用规范
- switch 与if else 效率比较 -------面试常考