一道SQL面试例题 if...else 与聚集函数

简介: 晚上回来,同学说面试遇到了一个SQL面试题目,自己做了一下,总结总结。 题目如下:   下面是产品数据表(产品id,颜色col,数量num),其中每种产品有1~2种颜色。   求每种产品各颜色的数量差值(对于只有一种颜色的保留产品总数)          解法如下: 1.先求出每种产品各颜色的数量   这个不难,直接使用group by 就可以啦。

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

题目如下:

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

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

        

解法如下:

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

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

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

  结果:

    

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

   因为每种产品只有1~2中:

  (1)如果有两种,结果就是颜色多的产品数量 - 颜色少的产品数量;

  (2)如果有一种,结果就是这种颜色的产品数量。

  SQL语句如下:

1 select A.id ,if(
2                 count(*) >1,    #判断条件,颜色数量
3                 max(A.total) - min(A.total),    #颜色多的产品数量 - 颜色少的产品数量
4                 max(A.total)    #产品数量
5                ) dis
6 from (
7         select id,col,sum(num) total from chanpin group by id,col
8      )  A 
9 group by A.id;

  结果:

    

相关文章
|
19天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
27天前
|
SQL Oracle 关系型数据库
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
本文介绍了多种SQL内置函数,包括单行函数、非空判断函数、日期函数和正则表达式相关函数。每种函数都有详细的参数说明和使用示例,帮助读者更好地理解和应用这些函数。文章强调了字符串操作、数值处理、日期计算和正则表达式的使用方法,并提供了丰富的示例代码。作者建议读者通过自测来巩固学习成果。
16 1
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
|
2月前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
2月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
2月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
|
2月前
|
SQL 关系型数据库 MySQL
SQL日期函数
SQL日期函数
|
3月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
4月前
|
SQL 数据处理 数据库
|
4月前
|
SQL Oracle 关系型数据库
SQL 中的大小写处理函数详解
【8月更文挑战第31天】
158 0
|
4月前
|
SQL 数据采集 数据挖掘
为什么要使用 SQL 函数?详尽分析
【8月更文挑战第31天】
54 0