ptgui中投影方式全画幅是什么意思
最满意答案
因为这是面试问题,我不会为你使用MySql而是用TSQL回答(翻译虽然非常简单但我会为你做这个练习)
SELECT (tab.year * 12 + num) AS month ,value + 0.001 * num AS value FROM tab CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11)) AS t(num) ORDER BY 1;
这个怎么运作:
1)从选项卡获取数据
2)生成具有数字0-11的子查询的笛卡尔积,每行相互之间
3)在
SELECT
计算月份为tab.year * 12 + num
和value并添加新别名4)按月排序
再看看我没有使用任何循环,但我的解决方案是100%基于设置。 要用第二个表存储它我只需要
SELECT ... INTO new_table_name...
(TSQL):编辑:
CREATE TABLE tab(year INT, value NUMERIC(10,4)); INSERT INTO tab(year, value) VALUES (18, 0.024), (19, 0.036), (20, 0.048), (21, 0.060); CREATE TABLE new_table AS SELECT (t.year * 12 + c.num) AS month ,t.value + ABS(t1.value-t.value)/12 * c.num AS value FROM tab t JOIN tab t1 ON t.year = t1.year + 1 CROSS JOIN (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11) AS c ORDER BY 1; SELECT * FROM new_table;
Because it is interview question, I won't answer for you using MySql but with TSQL (it is very trivial to translate though and I leave this exercise for you)
SELECT (tab.year * 12 + num) AS month ,value + 0.001 * num AS value FROM tab CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11)) AS t(num) ORDER BY 1;
How it works:
1) Get data from tab
2) Generate Cartesian Product with subquery of numbers 0 - 11, each row with each other
3) In
SELECT
calculate month astab.year * 12 + num
and value and add new aliases4) Order by month
Second look that I didn't use any loop but my solution is 100% set based. To store it with second table I need only
SELECT ... INTO new_table_name...
(TSQL):EDIT:
CREATE TABLE tab(year INT, value NUMERIC(10,4)); INSERT INTO tab(year, value) VALUES (18, 0.024), (19, 0.036), (20, 0.048), (21, 0.060); CREATE TABLE new_table AS SELECT (t.year * 12 + c.num) AS month ,t.value + ABS(t1.value-t.value)/12 * c.num AS value FROM tab t JOIN tab t1 ON t.year = t1.year + 1 CROSS JOIN (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11) AS c ORDER BY 1; SELECT * FROM new_table;
相关问答
更多-
TCP/IP模型是一个________。[2023-10-02]
a -
因为这是面试问题,我不会为你使用MySql而是用TSQL回答(翻译虽然非常简单但我会为你做这个练习) SQLFiddleDemo SELECT (tab.year * 12 + num) AS month ,value + 0.001 * num AS value FROM tab CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11)) AS t(num ...
-
下列中不属于面向对象的编程语言的是?[2022-05-30]
a -
触发器似乎是一个很好的选择。 考虑下面的代码片段作为你可能为你的需求做什么的一个例子。 请注意,我插入NULL作为ETA值,因为您没有提供有关ETA新插入值的信息。 对于InsertDate ,我使用当前日期。 DELIMITER // CREATE TRIGGER table1_after_update AFTER UPDATE ON table1 FOR EACH ROW BEGIN INSERT INTO table2 (notes, ETA, InsertDate) VALUE ...
-
空虚非常有趣 。 在您习惯之前,NULL值可能会令人惊讶。 从概念上讲,NULL表示“缺少未知值”,并且与其他值的处理方式略有不同。 更重要的是 您不能使用算术比较运算符(如=,<或<>)来测试NULL 有很多不同的方式来写这个。 其中一个是: select id, acct_name, status from admin_user where status IS NULL OR status != 2 与@ shA.t建议的有争议的。 select id, acct_name, status fro ...
-
如何在mysql中用一个查询从两个不同的表中选择两个记录(How to select two record from two different table with one query in mysql)[2023-08-01]
使用UNION命令http://dev.mysql.com/doc/refman/5.0/en/union.html select * from mp3 where baslik like '%$search%' UNION select * from HABERLER where baslik like '%$search%' (据推测它们具有相同数量的列和相同类型等) Use the UNION command http://dev.mysql.com/doc/refman/5.0/en/union ... -
是否有可能限制一个表只有一个记录在MySQL中?(Is it possible to restrict a table to have only one record in mysql?)[2021-09-08]
您可以设置对记录进行计数的触发器(具体来说,是一个插入触发器),如果计数大于1,则不允许插入操作。 查看http://dev.mysql.com/doc/refman/5.0/en/insert.html并相应地设置您的逻辑。 You can set up a trigger (to be specific, an Insert trigger) that counts the records and, if count is more than 1, it does not allow the inser ... -
MySQL - 记录父子表的已删除查询吗?(MySQL - does log record the deleted query of a parent-child table?)[2023-11-30]
第一:正如您在问题中提到的: a field in Child refers to the id field in Parent ,这意味着如果删除parent , 如果该字段配置为外键 ,则相关child parent也会被删除。 是否启用日志(在/etc/mysql/my.cnf中)可以帮助我观察实际导致我的Child记录被删除的原因? , 是的,可以记录您的查询。 但是,您可以从日志中解释导致删除的查询。 到底能有多糟糕? 它肯定会降低性能,但它完全取决于查询和记录的数据量以及您自己的服务器/ PC架 ... -
你应该在LEFT JOIN上放置m.type = "img"条件,而不是把它放在WHERE子句中: SELECT DISTINCT a.style, a.filename, a.path, m.type FROM articles AS a LEFT JOIN mnedia AS m ON a.iln = m.iln AND m.type = "img" WHERE a.iln = id_12345; you should put m.type = "i ...
-
获取mysql表中的最后一条记录(Get last record in mysql table)[2021-08-03]
SELECT * FROM table t1 JOIN (SELECT Record_ID ,MAX(Updates)as maxupdate FROM table GROUP BY Record_ID)x ON t1.Record_ID = x.Record_ID AND t1.Updates=x.maxupdate 小提琴 它也适用于多个Record_id SELECT * FROM table t1 JOIN (SELECT Record_ID ,MAX(Updates)as max ...