mysql - 一个字符出现在字符串的第一个位置和第二个位置的频率是多少?

标签 mysql sql

我正在尝试回答这个问题:

How often does a character occur in the first position versus the second position of a string?

在 Mysql 上使用 SQL 查询。

但是我得到一个语法错误。

代码:

SELECT 
    onechar, 
    ASCII(onechar) as asciival, 
    COUNT(*) as cnt,
    SUM(CASE WHEN pos = 1 THEN 1 ELSE 0 END) as pos_1,
    SUM(CASE WHEN pos = 2 THEN 1 ELSE 0 END) as pos_2
FROM (
    (SELECT 
        SUBSTRING(`city`, 1, 1) as onechar, 
        1 as pos
    FROM `orders`  
    WHERE LEN(`city` >= 1 )

    UNION ALL

    (SELECT 
        SUBSTRING(`city`, 2, 1) as onechar, 
        2 as pos
    FROM `orders`  
    WHERE LEN(`city` >= 2)
    ) 
GROUP BY onechar
ORDER BY onechar

错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY onechar ORDER BY onechar LIMIT 0, 30' at line 1

尝试了几种方法都没有成功。

谁能帮我解释一下这个问题?

最佳答案

括号看起来不正确,查询缺少派生表的别名。此外,因为 mysql 将 bool 值计算为 1 或 0,您可以简化 sum 语句。试试这个:

SELECT onechar, ASCII(onechar) as asciival, COUNT(*) as cnt,
SUM(pos = 1) as pos_1,
SUM(pos = 2) as pos_2
FROM (
    SELECT SUBSTRING(`city`, 1, 1) as onechar, 1 as pos
    FROM `orders` WHERE LENGTH(`city`) >= 1 
    UNION ALL
    SELECT SUBSTRING(`city`, 2, 1) as onechar, 2 as pos
    FROM `orders` WHERE LENGTH(`city`) >= 2
) t
GROUP BY onechar
ORDER BY onechar

关于mysql - 一个字符出现在字符串的第一个位置和第二个位置的频率是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36831232/

相关文章:

php - 使用 Bcrypt 密码验证登录

mysql - '无法解析针对 BeanFactory 的 bean 引用' 使用 spEl 注释

sql - 如何使用条件子句更新现有记录?

php - 读取文件或在数据库中搜索?

mysql - 求和和计数查询的正确语法

PHP 达到最大数据库连接数 - 使用 Kohana/ORM 发起连接

MySQL长查询: Lost connection to MYSQL server during query

mySql 使用行的 sum() 进行更新

mysql - SQL 查询替换通配 rune 本?

c# - SQL 查询 : Select Column1, 行数 (criteria1),行数 (criteria2)