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';