1.
SELECT
顾客id ,
SUM( DECODE( 航空公司, '东航', 1, 0 ) AS "乘坐东航次数",
SUM( DECODE( 航空公司, '南航', 1, 0 ) AS "乘坐东航次数",
SUM( DECODE( 航空公司, '北航', 1, 0 ) AS "乘坐东航次数"
FROM
航空数据表
GROUP BY
顾客id
HAVING
SUM( DECODE( 航空公司, '东航', 1, 0 ) > SUM( DECODE( 航空公司, '南航', 1, 0 )
AND SUM( DECODE( 航空公司, '东航', 1, 0 ) > SUM( DECODE( 航空公司, '北航', 1, 0 )
2.
SELECT
顾客id
FROM
航空数据表
WHERE
EXISTS (
SELECT 1 FROM 航空数据表 AS t
WHERE 航空数据表.顾客id = t.顾客id
AND TRUNC( 航空数据表.飞行日期, 'D' ) = AND TRUNC( t.飞行日期, 'D' ) + 1
)
1.使用PL/SQL编程将100以内的素数输出。 2.编写PL/SQL块,使用SLQ*Plus第一题 SET SERVEROUT ON DECLARE V_FLAG BOOLEAN; BEGIN FOR I IN 2
1. -----首先构建一个顾客乘坐东航飞机总次数的表t,然后按照乘坐次数从大到小排序,取第一行。就是最大的那个信息了。
select * from
(select 顾客id, sum(1) as 航班次数 from 航空数据表 where 航空公司 = '东航' group by 顾客id order by sum(1) desc) t where rownum <= 1
2.----------查询条件就是存在abs(trunc(t.飞行日期) - trunc(t1.飞行日期)) = 1,即表中存在相邻两天飞行日期的数据。abs是取绝对值,trunc是把日期类型去小时分秒的函数
select distinct 客户id from 航空数据表 t where exists (select 1 from 航空数据表 t1 where t.顾客id = t1.顾客id and abs(trunc(t.飞行日期) - trunc(t1.飞行日期)) = 1 )