Rails中相乘列的总和

时间:2010-12-23 03:52:23

标签: sql ruby-on-rails select sum

这应该很容易。在MySQL中,我可以这样做:

select sum(column1*column2) as sum1 from table

你如何使用sqlite在Rails中执行此操作?我已经尝试了find_by_sql以及上面的确切查询,以及find(:all,:select => ...)和各种其他事情,但没有返回正确的值。大多数都是空白的,如下:

[#<Element> ]

我可以循环,拉出值,然后求和,但这样做似乎很荒谬。

有人能指出我明显缺少的东西吗?谢谢!

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

正如@glortho在评论中所说,解决方案是

import 'package:auto_orientation/auto_orientation.dart'; import 'package:chewie/chewie.dart'; import 'package:chewie/src/chewie_player.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:video_player/video_player.dart'; void main() { runApp( ChewieDemo(), ); } class ChewieDemo extends StatefulWidget { ChewieDemo({this.title = 'Chewie Demo'}); final String title; @override State<StatefulWidget> createState() { return _ChewieDemoState(); } } class _ChewieDemoState extends State<ChewieDemo> { TargetPlatform _platform; VideoPlayerController _videoPlayerController1; VideoPlayerController _videoPlayerController2; ChewieController _chewieController; @override void initState() { super.initState(); _videoPlayerController1 = VideoPlayerController.network( 'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4'); _videoPlayerController2 = VideoPlayerController.network( 'https://www.sample-videos.com/video123/mp4/480/big_buck_bunny_480p_20mb.mp4'); _chewieController = ChewieController( videoPlayerController: _videoPlayerController1, aspectRatio: 3 / 2, autoPlay: true, looping: true, routePageBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondAnimation, provider) { return AnimatedBuilder( animation: animation, builder: (BuildContext context, Widget child) { return VideoScaffold( child: Scaffold( resizeToAvoidBottomPadding: false, body: Container( alignment: Alignment.center, color: Colors.black, child: provider, ), ), ); }, ); } // Try playing around with some of these other options: // showControls: false, // materialProgressColors: ChewieProgressColors( // playedColor: Colors.red, // handleColor: Colors.blue, // backgroundColor: Colors.grey, // bufferedColor: Colors.lightGreen, // ), // placeholder: Container( // color: Colors.grey, // ), // autoInitialize: true, ); } @override void dispose() { _videoPlayerController1.dispose(); _videoPlayerController2.dispose(); _chewieController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return MaterialApp( title: widget.title, theme: ThemeData.light().copyWith( platform: _platform ?? Theme.of(context).platform, ), home: Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Column( children: <Widget>[ Expanded( child: Center( child: Chewie( controller: _chewieController, ), ), ), FlatButton( onPressed: () { _chewieController.enterFullScreen(); }, child: Text('Fullscreen'), ), Row( children: <Widget>[ Expanded( child: FlatButton( onPressed: () { setState(() { _chewieController.dispose(); _videoPlayerController2.pause(); _videoPlayerController2.seekTo(Duration(seconds: 0)); _chewieController = ChewieController( videoPlayerController: _videoPlayerController1, aspectRatio: 3 / 2, autoPlay: true, looping: true, ); }); }, child: Padding( child: Text("Video 1"), padding: EdgeInsets.symmetric(vertical: 16.0), ), ), ), Expanded( child: FlatButton( onPressed: () { setState(() { _chewieController.dispose(); _videoPlayerController1.pause(); _videoPlayerController1.seekTo(Duration(seconds: 0)); _chewieController = ChewieController( videoPlayerController: _videoPlayerController2, aspectRatio: 3 / 2, autoPlay: true, looping: true, ); }); }, child: Padding( padding: EdgeInsets.symmetric(vertical: 16.0), child: Text("Video 2"), ), ), ) ], ), Row( children: <Widget>[ Expanded( child: FlatButton( onPressed: () { setState(() { _platform = TargetPlatform.android; }); }, child: Padding( child: Text("Android controls"), padding: EdgeInsets.symmetric(vertical: 16.0), ), ), ), Expanded( child: FlatButton( onPressed: () { setState(() { _platform = TargetPlatform.iOS; }); }, child: Padding( padding: EdgeInsets.symmetric(vertical: 16.0), child: Text("iOS controls"), ), ), ) ], ) ], ), ), ); } } class VideoScaffold extends StatefulWidget { const VideoScaffold({Key key, this.child}) : super(key: key); final Widget child; @override State<StatefulWidget> createState() => _VideoScaffoldState(); } class _VideoScaffoldState extends State<VideoScaffold> { @override void initState() { SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeRight, DeviceOrientation.landscapeLeft, ]); AutoOrientation.landscapeAutoMode(); super.initState(); } @override dispose() { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); AutoOrientation.portraitAutoMode(); super.dispose(); } @override Widget build(BuildContext context) { return widget.child; } }

这甚至适用于多个表

Element.sum( "column1*column2" )

SQL难以置信!

相关问题