在mysql中查询苹果公司(symbol = AAPL)2008 年 10 月每个交易日的涨跌情况,涨显示 rise,跌显示 fall,不变显示 unchange。涉及两个表stocks(exchange varchar(100),symbol varchar(100),ymd varchar(100),price_open float,price_high float,price_low float,price_close float,volume int,price_adj_close float);)dividends(exchange varchar(100),symbol varchar(100), ymd varchar(100),dividend float);select等语句使用小写
时间: 2024-03-25 14:36:42 浏览: 131
好的,以下是查询语句:
```
SELECT
IF(price_close > price_open, 'rise', IF(price_close < price_open, 'fall', 'unchange')) AS status
FROM
stocks
WHERE
symbol = 'AAPL'
AND ymd LIKE '2008-10-%'
```
这条语句会查询 stocks 表中 symbol 字段为 AAPL(苹果公司)的记录,并且 ymd 字段为 2008 年 10 月的所有记录。然后通过 IF 函数判断当日的收盘价与开盘价的大小关系来确定涨跌情况,并将结果显示为 status 字段。
相关问题
使用MySQL语句,查询苹果公司(symbol = AAPL)2008 年 10 月每个交易日的涨跌情况,涨显示 rise,跌显示 fall,不变显示 unchange。
假设数据表名为 `stock_data`,包含列名 `symbol`、`date`、`price`,则可以使用如下 MySQL 语句查询:
```
SELECT
CASE
WHEN open_price < close_price THEN 'rise'
WHEN open_price > close_price THEN 'fall'
ELSE 'unchange'
END AS change
FROM
stock_data
WHERE
symbol = 'AAPL'
AND YEAR(date) = 2008
AND MONTH(date) = 10
```
其中,使用 CASE WHEN 语句根据开盘价和收盘价判断涨跌情况,使用 YEAR 和 MONTH 函数筛选出符合条件的数据。
分别在hive和mysql执行如下查询,1.查询IBM公司(symbol = IBM)从 2000 年起所有支付股息的交易日(dividends 表中有对应记录)的收盘价(price_close)。2.查询苹果公司(symbol = AAPL)2008 年 10 月每个交易日的涨跌情况,涨显示 rise,跌显示 fall,不变显示 unchange。3.查询苹果公司(symbol = AAPL)2008 年 10 月每个交易日的涨跌情况,涨显示 rise,跌显示 fall,不变显示 unchange。查询 stocks 表中收盘价(price_close)比开盘价(price_open)高得最多的那条记录的交易所(exchange)、股票代码(symbol)、日期(ymd)、收盘价、开盘价及二者差价。4.从 stocks 表中查询苹果公司(symbol=AAPL)年平均调整后收盘价(price_adj_close)大于 50 美元的年份及年平均调整后收盘价。只有第二个查询hive的执行时间更短,对比Hive和MySQL查询的时间,进行分析
1. 在Hive中执行查询:
```
SELECT s.price_close
FROM stocks s
JOIN dividends d ON s.symbol = d.symbol AND s.ymd = d.ymd
WHERE s.symbol = 'IBM' AND s.ymd >= '2000-01-01' AND d.dividend_amount > 0;
```
在MySQL中执行查询:
```
SELECT s.price_close
FROM stocks s
JOIN dividends d ON s.symbol = d.symbol AND s.ymd = d.ymd
WHERE s.symbol = 'IBM' AND s.ymd >= '2000-01-01' AND d.dividend_amount > 0;
```
2. 在Hive中执行查询:
```
SELECT
CASE WHEN price_close > price_open THEN 'rise'
WHEN price_close < price_open THEN 'fall'
ELSE 'unchange'
END AS change
FROM stocks
WHERE symbol = 'AAPL' AND ymd BETWEEN '2008-10-01' AND '2008-10-31';
```
在MySQL中执行查询:
```
SELECT
CASE WHEN price_close > price_open THEN 'rise'
WHEN price_close < price_open THEN 'fall'
ELSE 'unchange'
END AS change
FROM stocks
WHERE symbol = 'AAPL' AND ymd BETWEEN '2008-10-01' AND '2008-10-31';
```
3. 在Hive中执行查询:
```
SELECT
CASE WHEN price_close > price_open THEN 'rise'
WHEN price_close < price_open THEN 'fall'
ELSE 'unchange'
END AS change,
*
FROM stocks
WHERE symbol = 'AAPL' AND ymd BETWEEN '2008-10-01' AND '2008-10-31';
```
在MySQL中执行查询:
```
SELECT
CASE WHEN price_close > price_open THEN 'rise'
WHEN price_close < price_open THEN 'fall'
ELSE 'unchange'
END AS change,
*
FROM stocks
WHERE symbol = 'AAPL' AND ymd BETWEEN '2008-10-01' AND '2008-10-31';
```
4. 在Hive中执行查询:
```
SELECT
YEAR(ymd) AS year,
AVG(price_adj_close) AS avg_price
FROM stocks
WHERE symbol = 'AAPL' AND price_adj_close > 50
GROUP BY YEAR(ymd);
```
在MySQL中执行查询:
```
SELECT
YEAR(ymd) AS year,
AVG(price_adj_close) AS avg_price
FROM stocks
WHERE symbol = 'AAPL' AND price_adj_close > 50
GROUP BY YEAR(ymd);
```
我们可以看到在这个例子中,Hive的执行时间更短。这是因为Hive通常用于处理大规模数据,可以利用Hadoop集群进行分布式计算,而MySQL则更适合处理小规模数据。此外,Hive还支持更复杂的查询语句和更多的数据处理功能,但是需要花费更多的时间来构建和维护Hadoop集群。因此,在选择使用哪个工具时,需要根据数据的规模和处理任务的要求进行权衡。
阅读全文