Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查询总数减少了%_Mysql_Sql - Fatal编程技术网

Mysql 查询总数减少了%

Mysql 查询总数减少了%,mysql,sql,Mysql,Sql,嘿,伙计们,我有些疑问。我想用百分比减少我的总数,但此代码给了我一些错误: SELECT `id_sewa`,`nama_villa`,DATE_FORMAT(`tgl_transaksi`, '%d-%m-%Y'),`nama_tamu`,`cek_in`,`cek_out`, datediff(`cek_out`,`cek_in`) as rn,format(`harga`, 0),format(datediff(`cek_out`,`cek_in`) *`harga`, 0)as tota

嘿,伙计们,我有些疑问。我想用百分比减少我的总数,但此代码给了我一些错误:

SELECT `id_sewa`,`nama_villa`,DATE_FORMAT(`tgl_transaksi`, '%d-%m-%Y'),`nama_tamu`,`cek_in`,`cek_out`, datediff(`cek_out`,`cek_in`) as rn,format(`harga`, 0),format(datediff(`cek_out`,`cek_in`) *`harga`, 0)as total,`ref`,
(
CASE
WHEN ref = "direct" THEN format(datediff(`cek_out`,`cek_in`) * `harga`, 0) - 10%
END) AS total_bersih

from sewa_villa
where tgl_transaksi BETWEEN '2017-11-12' and '2017-11-14';
我的期望:


全部的
裁判
总贝西
2,000,000
直接的
1,800,000
问题在于你的“-10%”:


请注意:您没有在case/when中添加任何其他内容,您确定吗?

您不能直接在MySQL上使用百分比计算(使用类似于
-10%
的方法)!您必须将
-10%
替换为
*0.9
,正如我在以下章节中提到的:


可按如下方式使用
%

  • 通配符运算符(
    列名称,如“%test%”
  • 在(
    列名称%5
    )上

在您的例子中:MySQL尝试计算一个模运算,但是
%
后面的数字丢失了。这就是MySQL抛出错误的原因。

Addf一些示例表数据和预期结果。(请使用格式化文本,而不是图像)同时显示准确的错误消息
-10%
=
*0.9
如果您需要输出,则应在末尾添加
和ref=“direct”
。这样你就不需要案例,只需要公式。非常感谢老兄,这帮我解决了我的问题,但我需要稍微改变一下我的圆括号,这个问题很完美:)谢谢老兄,这帮我,但第一个回答正确的人我仍然不能给你们投好票,因为我的声誉没有给我许可
SELECT `id_sewa`,`nama_villa`,DATE_FORMAT(`tgl_transaksi`, '%d-%m-%Y'),`nama_tamu`,`cek_in`,`cek_out`, datediff(`cek_out`,`cek_in`) as rn,format(`harga`, 0),format(datediff(`cek_out`,`cek_in`) *`harga`, 0)as total,`ref`,
(
CASE
WHEN ref = "direct" THEN format(datediff(`cek_out`,`cek_in`) * `harga`, 0) *0.9
END) AS total_bersih

from sewa_villa
where tgl_transaksi BETWEEN '2017-11-12' and '2017-11-14';
SELECT 
    `id_sewa`,
    `nama_villa`,
   DATE_FORMAT(`tgl_transaksi`, '%d-%m-%Y'),
   `nama_tamu`,
   `cek_in`,
   `cek_out`,
   DATEDIFF(`cek_out`,`cek_in`) AS rn,
   FORMAT(`harga`, 0),
   FORMAT(DATEDIFF(`cek_out`,`cek_in`) * `harga`, 0) AS total,
   `ref`, (
       CASE
           WHEN ref = "direct" THEN FORMAT(DATEDIFF(`cek_out`, `cek_in`) * `harga`, 0) * 0.9
       END) AS total_bersih
FROM sewa_villa
WHERE tgl_transaksi BETWEEN '2017-11-12' AND '2017-11-14';