【问题标题】:Subquery and joins SQL子查询和连接 SQL
【发布时间】:2020-09-27 11:52:19
【问题描述】:

我想知道哪个制造商的车辆销量最高 这会产生 2 个或更多产品点。并显示制造商名称和总数 制造商的车辆所涉及的销售量。

CREATE TABLE product (
    prod_code          NUMBER(3) NOT NULL,
    prod_description   VARCHAR2(75) NOT NULL,
    prod_points        NUMBER(2) NOT NULL
);

CREATE TABLE product_sale (
        sale_no         NUMBER(8) NOT NULL,
        sale_datetime   DATE NOT NULL,
        sale_location   VARCHAR2(100) NOT NULL,
        prod_code       NUMBER(3) NOT NULL,
        officer_id     NUMBER(8) NOT NULL,
        lic_no   CHAR(10) NOT NULL,
        veh_no  CHAR(17) NOT NULL
    );

CREATE TABLE vehicle (
    veh_no         CHAR(17) NOT NULL,
    veh_manufyr     DATE NOT NULL,
    veh_maincolor   VARCHAR2(20) NOT NULL,
    veh_manufname   VARCHAR2(30) NOT NULL,
    veh_modname     VARCHAR2(20) NOT NULL,
    veh_type        CHAR(2) NOT NULL
);

我不确定如何关联 3 个不同的连接并找到输出。

预期输出:

【问题讨论】:

  • 是样本表数据还是预期结果?我们两者都需要。
  • 样本数据。编辑了预期的输出。
  • 那么VEHICLE和PRODUCT是什么关系呢?还是 VEHICLE 和 PRODUCT_SALE?
  • @APC 可能是 vehicle#veh_no = product_sale#veh_no 但这只是一个猜测。
  • 对不起。编辑了我的问题。 Vehicle 和 Product 有 veh_no 共同点。

标签: sql oracle join count subquery


【解决方案1】:

类似的东西? (未测试)

SELECT veh_manufname, total_sales_count
FROM (
   SELECT v.veh_manufname, 
          count(*) as total_sales_count,
          count( CASE WHEN prod_code IN (
                     SELECT prod_code FROM product WHERE prod_points >= 2
                ) THEN 1 END ) as sales_point_2
   FROM product_sale p
   JOIN vehicle v ON v.veh_no = p.veh_no
   GROUP BY v.veh_manufname
)
ORDER BY sales_point_2 DESC
LIMIT 1
-- LIMIT 1 works on most databases: MySql, PostgreSql, SQLite ....
-- If you are using ORACLE then remove the above line and uncomment the below one
-- FETCH 1 ROWS ONLY

-- If you are using SQL Server then (probably) SELECT TOP 1 will work but I'am not sure

【讨论】:

  • 另外,如果有多个制造商的总数相同,则按制造商名称升序排列。我怎么得到这个?
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 2016-03-20
  • 1970-01-01
相关资源
最近更新 更多