编写 SQL 查询工作台

Posted

技术标签:

【中文标题】编写 SQL 查询工作台【英文标题】:Writing SQL Queries Workbench 【发布时间】:2021-03-01 20:47:02 【问题描述】:

我在编写此查询时遇到了一些问题。这是我目前所拥有的:

查找在一次交易中存入最高金额的客户名称(包括交易金额)。

select name, amount
from customer, transaction, account
where account.owner_ssn = customer.ssn
and account.type = transaction.type
order by transaction.amount desc 
limit by one;

**这是银行数据库:**

CREATE TABLE customer (
    name VARCHAR(20),
    sex CHAR(1),
    ssn CHAR(9) NOT NULL,
    phone CHAR(15),
    dob DATE,
    address VARCHAR(50),
    PRIMARY KEY(ssn)

);
    
CREATE TABLE account (
    number CHAR(16) UNIQUE NOT NULL,
    open_date DATE,
    type CHAR(20),
    owner_ssn CHAR(9) NOT NULL,
    PRIMARY KEY(number)
    );
    
CREATE TABLE transaction (
    id INT(20) UNIQUE NOT NULL,
    amount DECIMAL(9,2),
    tdate DATE,
    type CHAR(10),
    account_num CHAR(16),
    PRIMARY KEY(id) 
);

【问题讨论】:

请不要在使用 mysql 时标记 SQL Server!不要对我们大喊大叫。并解释你遇到了什么麻烦?什么没有按您的预期工作?也请每个问题只问一个问题 - 而不是 4 个。并且每次都显示示例数据、预期结果和您的尝试。 很抱歉,我刚开始使用 ***。我不太了解 MySQL 和 SQL Server 之间的区别,抱歉。我删除了标签。你大喊大叫是什么意思?对不起,如果我传达了!我只是想我会发表一篇文章,因为它都是用那个数据库编写查询。至于结果,我不确定问题是否很清楚。 我看到了你的问题、你提出的解决方案和一些细节,但你的问题是什么? 第四个给我一个错误,我不确定前三个是否正确。 MySQL 和 SQL Server 以及两个完全不同的数据库引擎。大喊大叫是让你的头衔全部大写。问题应该只问一个问题。要问一个好的 SQL 问题,它应该总是有样本数据、预期结果和你的尝试——你可能很清楚,但你需要做更多的工作让其他人理解。样本数据 + 预期结果是一种非常清晰的方式来展示您希望实现的目标。如果您以 DDL+DML 的形式提供示例数据,那么人们可以复制并粘贴出来进行测试。 【参考方案1】:

以下查询将返回单笔交易中存入最高金额的客户名称。如果有多个客户的最高金额相同,则将选择第一个存入的客户。

select name, amount
from customer c inner join account a
on c.ssn=a.owner_ssn
inner join transaction t 
on a.type = t.type
order by t.amount desc, t.tdate
limit 1;

【讨论】:

以上是关于编写 SQL 查询工作台的主要内容,如果未能解决你的问题,请参考以下文章

我在 php 中编写了一个 sql 查询,任何人都可以建议这段代码可以工作吗?

SQL工作日查询

Laravel 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作

在nodejs中编写多个sql查询

SQL计算无工作天数

工作中常用的SQL优化