我所拥有的:
我有一个表visits
,其中有2列userid
和ref_url
,其中userid
是用户的ID,ref_url
对应于URL从中引用userid
。 ref_url
列中的空白对应于直接访问,因此不予考虑。
表格:vists
-------------------------------------
| userid | ref_url |
-------------------------------------
| 1 | |
| 1 | https://demosite.com |
| 1 | https://demosite2.com |
| 1 | |
| 1 | https://demosite3.com |
| 1 | |
-------------------------------------
我希望实现的目标:
我想创建一个查询,该查询将计算特定ref_url
的{{1}}出现的总数(不包括空格)(在ref_url字段中),将计数限制在100以内,并将计数乘以0.5,并在别名列userid
上将结果表示为DECIMAL。
estimated value
我的查询:
------------------------------------
| userid | estimated value |
------------------------------------
| 1 | 1.50 |
------------------------------------
上面的查询抛出语法错误:
您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以获取在'2)附近使用的正确语法
将SELECT userid,
CAST(((
SELECT COUNT(NULLIF(TRIM(ref_url), ''))
FROM visits
LIMIT 0,100
) * 0.5) AS DECIMAL(12,2)) AS 'estimated value'
FROM visits
GROUP BY userid
替换为DECIMAL(12,2)
时,查询有效。
与DECIMAL(12,2)一起使用时,查询与Adminer一起输出,但导致
[1329]无数据-提取,选择或处理了零行
直接在Mariadb上尝试过。会出现权限问题吗?
答案 0 :(得分:1)
LIMIT
在收集数据后 发生。您的子查询仅收集一行,因此LIMIT
无关紧要。但是,由于您使用的是MariaDB(不是MySQL),因此可以说
LIMIT ROWS EXAMINED 100
(注意:我尚未对此进行测试。)
Ref:https://mariadb.com/kb/en/library/limit-rows-examined/-自MariaDB 5.5.21起
对于DECIMAL
而言-使用{p>代替CAST(expression AS DECIMAL(10,2))
FORMAT(expression, 2)