mariadb MYSQL SUM,值必须根据条件更改

falq053o  于 2022-11-08  发布在  Mysql
关注(0)|答案(1)|浏览(124)

我有一个“合同”表,用户可以在其中选择合同是“年度”还是“每月”(在MariaDB/phpmyadmin上工作)
数据以下列方式存储:
| 合同|周期|循环|销售价格|产品类别|
| - -|- -|- -|- -|- -|
| 第001章|一个|年度|一万二千元|第一类|
| 002年|一个|按月|千元|2类|
我想生成一个报告,按类别列出每月合同的总和
现在,下面的这个查询工作,但它无用,因为它做的总和“年度”合同连同每月合同

SELECT SUM(contracts.salesprice), `categories`.*
        FROM `contracts` 
        LEFT JOIN `categories` ON `contratos`.`cat_id` = `categories`.`id_cat`
     GROUP BY categorias.descripcion_cat;1

我是一个新手,到目前为止,我对INSERT、SELECT、UPDATE、DELETE都很满意;我试着阅读所有关于CASE或IF的文档,但我不知道如何告诉MySQL基于条件进行求和和计算
当CICLE = YEARLY时,则为SALEPRICE /12(以获得月值)

a2mppw5e

a2mppw5e1#

你在CASE的轨道上是正确的。
下面的代码片段将把你的年销售价格转换成月销售价格:

SUM(
  CASE 
    WHEN contracts.cicle = 'YEARLY' THEN (contracts.salesprice / 12) 
    WHEN contracts.cicle = 'MONTHLY' THEN contracts.salesprice
    ELSE 0 
  END
)

要在查询中使用它,只需将您的SUM(...)替换为该值即可。
CASE语句有几个WHEN条件。它使用第一个为真的值,如果没有为真的,它将使用ELSE值(如果你不喜欢0,你可以改变它)。所有这些结果值然后用SUM求和。
CASE相对于IF的优势在于,如果您需要针对半年、季度等进行更多计算,则可以根据需要扩展CASE

相关问题