用SQL做数学题

来源:互联网 发布:优学通软件下载 编辑:程序博客网 时间:2024/05/30 22:55

1、做一个3X3的加法表

SELECT A || '+' || B ||'=' || (A + B)

  FROM (SELECTROWNUM AFROM ALL_OBJECTSWHEREROWNUM <=3),

       (SELECT ROWNUM BFROM ALL_OBJECTSWHEREROWNUM <=3);


2、构造出1到128

WITH A AS

 (SELECT 1

    FROM DUAL

  UNION ALL

  SELECT 1 FROM DUAL)

SELECT ROWNUM FROM A, A, A, A, A, A, A;


3、做一个5X5的乘法表

WITH MULTIPLIER AS

 (SELECT ROWNUM NFROM DUALCONNECTBYROWNUM <6)

SELECT A.N || '*' || B.N ||'=' || (A.N * B.N)

  FROM MULTIPLIER A, MULTIPLIER B;


4、池塘边上有牛和鹅若干,小华总共看到15个头42条腿,请问牛和鹅各有多少?

WITH A AS

 (SELECT 1

    FROM DUAL

  UNION ALL

  SELECT 1 FROM DUAL),

B AS

 (SELECT ROWNUM N FROM A, A, A, A) --构造出6条记录代表到6

SELECT X.N NUM_OF_BULL, Y.N NUM_OF_GOOSE

  FROM B X, B Y

 WHERE X.N * 4 + Y.N *2 =42

   AND X.N + Y.N = 15;


5、百钱买鸡兔:老母鸡3块1只,小母鸡4块5只,大白兔2块1只,小白兔3块4只,要求买回来的动物总共100只,并且脚不少于240条不多于320条。花100块钱来买这些动物,要求每种动物都至少要购买一只且钱正好花完,输出所有的可能情况,并依次按老母鸡、小母鸡、大白兔、小白兔的数量顺序排序。(要求在7秒之内出结果)

WITH LMJ AS

 (SELECT ROWNUM LMJFROM ALL_OBJECTS WHERE ROWNUM <= 95),

XMJ AS

 (SELECT LMJ XMJ FROM LMJWHERE MOD(LMJ, 5) =0),

DBT AS

 (SELECT LMJ DBT FROM LMJ),

XBT AS

 (SELECT LMJ XBT FROM LMJWHERE MOD(LMJ, 4) =0)

SELECT LMJ, XMJ, DBT, XBT

  FROM LMJ, XMJ, DBT, XBT

 WHERE LMJ + XMJ + DBT + XBT = 100

   AND LMJ <= (100 -12) / 3

   AND DBT <= (100 -10) / 2

   AND ((LMJ + XMJ) * 2 + (DBT + XBT) *4) BETWEEN 240AND 320

   AND LMJ * 3 + XMJ * (4 /5) + DBT * 2 + XBT * (3 /4) = 100

 ORDER BY LMJ, XMJ, DBT, XBT;



0 0
原创粉丝点击