SQL优化问题:判断数据条件是否符合金额正常

img


#需求:判断数据条件是否符合金额正常
#瓶颈:两张表数据量都比较大,关联查询的话 查询效率很低

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/928932
  • 这篇博客也不错, 你可以看下SQL把小写的金额转换成大写的金额函数
  • 除此之外, 这篇博客: SQL作业中的 7.查询所有有奖金的元哦给你信息 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • SELECT *
    FROM emp
    WHERE comm IS NOT NULL;
    +-------+--------+----------+------+------------+---------+---------+--------+
    | EMPNO | ENAME  | JOB      | MGR  | HIREDATE   | SAL     | COMM    | DEPTNO |
    +-------+--------+----------+------+------------+---------+---------+--------+
    |  7499 | ALLEN  | SALESMAN | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30 |
    |  7521 | WARD   | SALESMAN | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30 |
    |  7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30 |
    |  7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30 |
    +-------+--------+----------+------+------------+---------+---------+--------+
    
  • 您还可以看一下 董旭阳老师的SQL入门教程课程中的 增加数据小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题: 如何使用SQL查询来判断数据中的金额是否符合正常范围?

    根据给定的参考资料,可以利用SQL的case when语句进行判断。根据奖金类型btype的不同,计算奖金金额bonus,并与薪水salary进行比较。

    其中,奖金类型为1时,奖金为薪水salary的10%;奖金类型为2时,奖金为薪水salary的20%;其他类型的奖金为薪水salary的30%。

    具体的查询语句如下:

    SELECT eb.emp_no, e.first_name, e.last_name, eb.btype, s.salary,
      (CASE eb.btype
        WHEN 1 THEN s.salary*0.1
        WHEN 2 THEN s.salary*0.2
        ELSE s.salary*0.3
      END) AS bonus
    FROM emp_bonus AS eb
    JOIN employees AS e
      ON eb.emp_no = e.emp_no
    JOIN salaries AS s
      ON eb.emp_no = s.emp_no
    WHERE s.to_date = '9999-01-01';
    

    以上查询语句将会返回符合条件的数据,其中包括员工号(emp_no)、员工姓名(first_name和last_name)、奖金类型(btype)、当前薪水(salary)以及计算得出的奖金金额(bonus)。

    这样,我们就可以根据查询结果判断数据中的金额是否符合正常范围。


SELECT t.* FROM gs_goods_spu t 
LEFT JOIN gs_goods_sku s1 
ON s1.sku_id = t.min_sku_id 
AND s1.settle_amount <= s1.official_price 
LEFT JOIN gs_goods_sku s2 
ON s2.sku_id = t.max_sku_id 
AND s2.settle_amount <= s2.official_price 
WHERE s1.sku_id IS NOT NULL AND s2.sku_id IS NOT NULL;