# 使用 OpenAI 提示 SQL

By [ABK](https://paragraph.com/@anran888) · 2024-01-13

---

自然语言查询

借助 Space and Time 支持 OpenAI 的聊天机器人，您无需了解任何 SQL 即可与数据库交互。您可以从简单的自然语言输入生成 SQL 命令。

[聊天机器人可以在时空工作室](https://app.spaceandtime.ai/)中找到。让我们看一下一些世代示例：

> 📘
> --
> 
> 该聊天机器人由 OpenAI 启用，对于给定的自然语言输入可能不会返回完全相同的 SQL 语句。

示例查询
====

让我们编写一个简单的查询，它将返回以太坊上执行最多交易的前 10 个地址

    show me the top users on Ethereum by number of transactions limit 10
    

执行完这个提示后，就会生成这条SQL语句。

    SELECT
      ETHEREUM.TRANSACTIONS.FROM_ADDRESS,
      COUNT(ETHEREUM.TRANSACTIONS.TRANSACTION_HASH) AS TRANSACTION_COUNT
    FROM
      ETHEREUM.TRANSACTIONS
    GROUP BY
      ETHEREUM.TRANSACTIONS.FROM_ADDRESS
    ORDER BY
      CAST(TRANSACTION_COUNT AS DECIMAL(38)) DESC
    LIMIT
      10;
    

让我们尝试另一个以太坊每周活跃用户预测。我们可以将以下内容输入到聊天机器人中：

文本

    give me a forecast of active users over time by week 
    

并且会生成这样的SQL语句：

SQL

    SELECT
      DATE_TRUNC ('week', CAST(TIME_STAMP AS DATE)) AS week,
      COUNT(DISTINCT WALLET_ADDRESS) AS active_users
    FROM
      ETHEREUM.NATIVE_WALLET
    GROUP BY
      DATE_TRUNC ('week', CAST(TIME_STAMP AS DATE))
    ORDER BY
      week ASC;
    

* * *

最后，我们添加更多的逻辑，提出更具挑战性的问题，根据特定的逻辑来获取以太坊上的钱包信息。我们可以将以下内容输入到聊天机器人中：

sql

    show me all the ethereum wallets with a balance > 5 and at least 1 transaction associated
    

并且会生成这样的SQL语句：

SQL

    SELECT 
        ETH.WALLET_ADDRESS,
      CAST(ETH.BALANCE AS DECIMAL(30))
    FROM 
        ETHEREUM.NATIVE_WALLET ETH 
    INNER JOIN
        ETHEREUM.TRANSACTION TX ON T.TRANSACTION_HASH = T.TRANSACTION_HASH 
    WHERE 
        CAST(BALANCE AS DECIMAL(30))>5
    GROUP BY 
      ETH.WALLET_ADDRESS

---

*Originally published on [ABK](https://paragraph.com/@anran888/openai-sql)*
