MySql多列子查询

时间:2015-10-15 10:54:27

标签: mysql

我有一张如下表格。

Gowden | Year   Month   Stock Item  Plan_Stock(In Tons) Avail_Stock(In Tons)
GD1    | 2015 | Jun   | White Rice |    20             |    15
GD1    | 2015 | Jun   | Wheat      |    20             |    20
GD1    | 2015 | Jun   | Brown Rice |    10             |    10
GD2    | 2015 | Jun   | White Rice |    20             |    20
GD2    | 2015 | Jun   | Wheat      |    20             |    10
GD1    | 2015 | Jan   | White Rice |    20             |    10
GD1    | 2015 | Jan   | Wheat      |    20             |    10
GD1    | 2015 | Jan   | Brown Rice |    10             |    5
GD2    | 2015 | Jan   | White Rice |    20             |    20
GD2    | 2015 | Jan   | Wheat      |    20             |    20
GD2    | 2015 | Jan   | Brown Rice |    10             |    10
GD3    | 2015 | Jan   | White Rice |    20             |    5
GD3    | 2015 | Jan   | Wheat      |    20             |    5
GD3    | 2015 | Jan   | Brown Rice |    10             |    5
GD1    | 2014 | Jun   | White Rice |    15             |    10
GD2    | 2014 | Jun   | White Rice |    15             |    10
GD3    | 2014 | Jun   | White Rice |    15             |    10

我想查看其中,它将计算最近可用的计划可用库存项目的百分比。无论列表中的项目如何。例如GD1最近的更新是在2015年6月20 + 20 + 10 = 50吨计划。 15 + 20 + 10 = 45吨可用。所以计划的可用百分比是90%。如下图所示。

Gowden | Year   Month   Stock % Precent
GD1    | 2015 | Jun   |        90%      |
GD2    | 2015 | Jun   |        75%      |
GD3    | 2015 | Jan   |        30%      |

有没有办法在一个视图中制作这个或者我需要编写脚本来计算?感谢并提前感谢所有人。

3 个答案:

答案 0 :(得分:0)

试试这个:

let dateString = "2015-10-15"
let formater = DateFormatter()
formater.dateFormat = "yyyy-MM-dd"
print(dateString)

formater.locale =  Locale(identifier: "en_US_POSIX")
let date = formater.date(from: dateString)
print(date!)

答案 1 :(得分:0)

我试过设置approch。我没有你的架构所以我无法测试。可能需要将monthyear转换为date type,然后应用max函数。

SELECT gowden, year, month, 100*sum(avail_stock)/sum(plan_stock)
FROM your_table
GROUP BY gowden 
HAVING year=max(year) and month=max(month)

答案 2 :(得分:0)

我尝试过两次查询。 1)SELECT gowden,年,月,100 *总和(avail_stock)/ sum(plan_stock)     来自your_table     GROUP BY gowden     HAVING年=最大(年)和str_to_date(月,'%b')=最大(str_to_date(月,'%b'))

!工作,但我看到的问题是缺少一些gowdens。我不知道为什么。

2)选择gowden,年,月,100 *总和(avail_stock)/ sum(plan_stock)   来自your_table  group by gowden,year,month HAVING year = max(year)and str_to_date(month,'%b')= max(str_to_date(month,'%b'))ORDER BY gowden ASC,year,month DESC。

工作但不仅是最近一个月,所有月份的数据都会出现,但是从最近的一年和一个月开始下降。 从视图我得到我可以查询它获得每个gowden的最新数据。

感谢Pablo Santa和Hitesh。