Python 将查询中的数据插入现有表
此查询有效Python 将查询中的数据插入现有表,python,sql,Python,Sql,此查询有效 SELECT Round(( (SELECT Count(*) FROM nps_surveys WHERE score >= 9 AND social = 0 AND Date(completedon) >= Last_day(CURRENT_DATE) +
SELECT Round(( (SELECT Count(*)
FROM nps_surveys
WHERE score >= 9
AND social = 0
AND Date(completedon) >= Last_day(CURRENT_DATE) +
INTERVAL 1 day
- INTERVAL 1 month) /
(SELECT Count(score)
FROM nps_surveys
WHERE score IS NOT NULL
AND social = 0
AND Date(completedon) >= Last_day(
CURRENT_DATE) +
INTERVAL 1 day
-
INTERVAL 1 month) *
100 ) - ( (SELECT Count(*)
FROM nps_surveys
WHERE score >= 0
AND score <= 6
AND social = 0
AND Date(completedon) >= Last_day(CURRENT_DATE)
+
INTERVAL 1
day
- INTERVAL 1 month) /
(SELECT Count(score)
FROM nps_surveys
WHERE score IS NOT NULL
AND social = 0
AND Date(completedon) >= Last_day(
CURRENT_DATE)
+
INTERVAL
1 day
-
INTERVAL 1 month) *
100 )) nps;
但是这个不
SELECT cast(round((
(
SELECT Count(*)
FROM nps_surveys
WHERE score >= 9
AND social = 0
AND Date(completedon) >= Last_day(CURRENT_DATE) + interval 1 day - interval 1 month) /
(
SELECT count(score)
FROM nps_surveys
WHERE score IS NOT NULL
AND social = 0
AND date(completedon) >= last_day(CURRENT_DATE) + interval 1 day - interval 1 month)*100) - (
(
SELECT count(*)
FROM nps_surveys
WHERE score >=0
AND score <= 6
AND social = 0
AND date(completedon) >= last_day(CURRENT_DATE) + interval 1 day - interval 1 month) /
(
SELECT count(score)
FROM nps_surveys
WHERE score IS NOT NULL
AND social = 0
AND date(completedon) >= last_day(CURRENT_DATE) + interval 1 day - interval 1 month)*100)) nps;
当你的SQL语法出现错误时,我一直在运行一个错误;查看与MySQL服务器版本相对应的手册,以了解第1行“nps”附近使用的正确语法,但这没有意义,因为唯一的区别是cast函数。我尝试在没有强制转换的情况下将上述已知的工作查询插入到python脚本中,但它也向我发出了尖锐的声音。您从未在强制转换函数中使用过相应的右括号。您应该尝试将查询简化为以下内容:
SELECT COUNT(CASE WHEN score >= 9 THEN 1 END) as bigger_9,
COUNT(CASE WHEN score >= 0 and score <= 6 THEN 1 END) as between_0_6,
COUNT(CASE WHEN score = 0 THEN 1 END) as equal_0,
COUNT(score) total_count // Dont need filter NULL, COUNT doesnt count NULL
FROM table
WHERE social = 0
AND date(completedon) >= last_day(CURRENT_DATE) +
interval 1 day - interval 1 month*100
不确定日期部分,但希望我用SELECT cast打开括号时,您能了解我的想法。。。不要关闭它,我得到一个错误,你的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行“nps”附近使用的正确语法。@JohnF这正是我的观点,您已经指出您正在使用cast执行函数调用。。。但您从未关闭它-这是一个语法错误,如消息所示。@EyueIDK当我添加关闭时,如nps;,它仍然返回一个错误。@JohnF您需要在nps之前而不是之后使用右括号。老实说,我甚至不确定是否需要强制转换,因为我没有将输入转换为其他内容。即使删除它,查询也会正常运行,但当我将其放入python脚本中时,SQL错误会返回。