晚上回来,同学说面试遇到了一个SQL面试题目,自己做了一下,总结总结。

题目如下:

  下面是产品数据表(产品id,颜色col,数量num),其中每种产品有1~2种颜色。

  求每种产品各颜色的数量差值(对于只有一种颜色的保留产品总数)

        

解法如下:

1.先求出每种产品各颜色的数量

  这个不难,直接使用group by 就可以啦。SQL语句如下:

select id,col,sum(num) total from chanpin group by id,col

  结果:

    

2.求每种产品各颜色的数量差值(对于只有一种颜色的保留产品总数)

  因为每种产品只有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 与聚集函数的更多相关文章

  1. SQL学习之汇总数据之聚集函数

    一. 1.我们经常需要汇总数据而不用把他们实际检索出来,为此SQL提供了专门的函数,以便于分析数据和报表生成,这些函数的功能有: (1)确定表中行数(或者满足单个条件或多个条件或包含某个特定值的行数) ...

  2. 深入解读SQL的聚集函数

    摘要:本文从基本聚集操作入手,介绍常用的SQL语法,以及一些扩展的聚集功能,同时会讲到在GaussDB(DWS)里聚集相关的一些优化思路. 本文分享自华为云社区<GaussDB(DWS) SQL ...

  3. sql面试

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name   kecheng   fenshu 张三     语文       81张三     数学       75李四     语文   ...

  4. 一道SQL的面试题之联想

    一道SQL的面试题之联想 本人工作在一家小型的民营企业,主要从事业务系统的日常维护,二次开发,菜鸟一枚.周五经理准备面试两个开发人员,据简历,都还比较不错,让经理产生了想法,于是准备了一套面试题目,给 ...

  5. SQL中的5种聚集函数

    作为一个刚毕业进入这行的菜鸟,婶婶的觉的那种大神.大牛到底是怎样炼成的啊,我这小菜鸟感觉这TMD要学的东西这多啊,然后就给自己定了许多许多要学习的东西,可是有人又不停地给你灌输:东西不在多而要精通!我 ...

  6. SQL 聚集函数使用

    SQL 聚集函数使用 (2009-04-14 15:50:36) 转载▼   总结: 在SQL语句中同时包含where子句,groupby子句,having子句及聚集函数时的执行顺序: 1.按WHER ...

  7. 一道sql面试题(查询语句)

    一道sql面试题(查询语句)   id name age 1  a        11 2  b        11 3  c        12 4  d        13 5  e        ...

  8. SQL必知必会 -------- 聚集函数、分组排序

    聚集函数 1.AVG()函数 输入:SELECT AVG(prod_price) AS avg_price FROM Products 输出: 警告:只用于单个列AVG()只能用来确定特定数值列的平均 ...

  9. SQL分组查询及聚集函数的使用

    今天要做一个查询统计功能,一开始有点犯难,上午尝试大半天才写出统计sql语句,才发现自己sql分组查询及聚集函数没学好:其实就是group by子句和几个聚集函数,熟练使用统计功能很简单.在此总结下今 ...

随机推荐

  1. TNetHTTPClient演示

    TNetHTTPClient演示 TNetHTTPClient是DELPHI新增加的异步HTTP通信控件(区别于INDY的阻塞控件). unit Unit1; interface uses Winap ...

  2. ubuntu12.04安装svn 1.7(转载)

    ubuntu12.04安装svn 1.7 分类: ubuntu2013-10-22 16:03 239人阅读 评论(0) 收藏 举报 svnubuntu   目录(?)[+]   1.问题     在 ...

  3. asp.net 文件批量移动重命名

    最近闲时写了个批量移动重命名文件的工具 点击下载工具

  4. Java入门1day

    Java安装及环境变量配置 1.安装 2.环境变量配置 1) 右击"计算机"-->属性(R)-->高级系统设置-->高级-->环境变量 2) 系统变量(或用 ...

  5. C++函数模版

    如果对于两种不同类型的数值进行比较,可能会写出以下的代码: int compare(const string &v1, const string &v2) { if (v1 < ...

  6. IE6兼容透明JS

    <!--兼容png格式图片--> <!--[]> <script type="text/javascript" src="Js/DD_bel ...

  7. javascript基础知识-语句

    关于javascript语句,有下面一些有趣的用法. 1.空语句的使用: 空语句只包含一个";",那在什么时候可以使用呢? 例: //初始化一个数组a for(i = 0;i &l ...

  8. wav文件格式分析(三)

    (四)附表 1.头格式表: 2.PCM数据的存放方式 3.PCM波形样本的数据格式 WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数. 首先存储低有效字节,表示样 ...

  9. 【Leetcode】【Hard】Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 解 ...

  10. [安卓] 6、列表之ArrayAdapter适配

    这个和以前的几个都有点不同,首先这个不用在xml中写对应的控件,而是直接在activity中将整个list实现的:首先要实例化列表和用于存储数据的数组list[9-10],第12-14行放list里加 ...