mysql - SQL:获取最大数量的 ID(已售商品)的 X、Y 属性

标签 mysql sql max

我有两张 table ,一张包含门票和其他路线。我想为售出的机票数量最多的情况生成 2 个属性:flight_DATE 和 Route_CODE。由于没有存储已售门票数量的属性,因此我必须执行查询以查找 count(ticket_ID) 数量的 max(),因为每个 Ticket_ID 代表已售门票...对吧?我没有实际的数据库来尝试这个,所以这是我的查询:

SELECT routes.ROUTE_CODE , tickets.FLIGHT_DATE
    FROM routes JOIN tickets ON routes.ROUTE_CODE = tickets.ROUTE_CODE
WHERE count(ticket.TICKET_ID)  = (
            SELECT max(count(ticket.TICKET_ID)
            )

我对 SQL 不太有信心,所以这是否正确???提前致谢!

最佳答案

您的查询背后的想法是正确的,但您编写的 max 计算没有级别,因此您将获得所有售出门票的计数。

您也不能在 where 子句中放入聚合列上的条件(就像您对 count(ticket.TICKET_ID) 所做的那样;这种条件会转到having 子句。

这个应该可以满足你的需要

SELECT  ROUTE_CODE, FLIGHT_DATE
JOIN    tickets
GROUP BY ROUTE_CODE , FLIGHT_DATE
HAVING  count(tickets.TICKET_ID) = ( /*filter the row with count = max count */
          SELECT  max(CNT) /* get the max of the counts */
          FROM    (
                    SELECT  count(TICKET_ID) as CNT /* get the counts at desired levels */
                    FROM    tickets
                    GROUP BY FLIGHT_DATE, ROUTE_CODE
                  )
        )

我删除了 join with routes 表,因为您使用的唯一列 (ROUTE_CODE) 在 tickets< 上可用 表也是如此,但是如果您想从该表中选择更多数据并且绝对不是错误,这可能会很有用。

顺便说一句,如果您没有可用于测试的数据库,您可以在 rextester 等网站上尝试查询。

关于mysql - SQL:获取最大数量的 ID(已售商品)的 X、Y 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42812062/

相关文章:

php - 通过查询获取 MySQL GROUP 中的最后一个

c# - 需要读取 excel 表 C# 并仅导入 mySQL 3 列

php - 如何检索并显示二叉树中父节点的所有子节点

MySQL GROUP BY WITH ROLLUP - 想要 ROLLUP 所有排列

php - 将 SQl 转换为 Laravel

java - 整数的最大值

mysql - 更改索引列上的排序规则而不更改数据

mysql - LAMP/WAMP/MAMP 中 MYSQL(Binary) 和 MySql 的区别

sql - 创建 SQL Server 沙箱

c# - 获取 List.Max 的索引?